lib/calendlyr/error.rb in calendlyr-0.6.0 vs lib/calendlyr/error.rb in calendlyr-0.7.0

- old
+ new

@@ -1,4 +1,45 @@ module Calendlyr - class Error < StandardError + class Error < StandardError; end + + class PermissionDenied < StandardError; end + + class BadRequest < StandardError; end + + class PaymentRequired < StandardError; end + + class Unauthenticated < StandardError; end + + class NotFound < StandardError; end + + class ExternalCalendarEror < StandardError; end + + class InternalServerError < StandardError; end + + class ResponseErrorHandler + ERROR_TYPES = { + "400" => BadRequest, + "401" => Unauthenticated, + "403" => PermissionDenied, + "404" => NotFound, + "424" => ExternalCalendarEror, + "500" => InternalServerError + } + + def initialize(code, body) + @code = code + @body = body + end + + def error + error_type.new("[Error #{@code}] #{@body["title"]}. #{@body["message"]}") + end + + private + + def error_type + return PaymentRequired if @code == "403" && @body["message"].include?("upgrade") + + ERROR_TYPES[@code] + end end end