Sha256: 660fe12454596cc2465b9713e1cad6763f20d3c53f9f8b2c27d2eff6e5346dd9

Contents?: true

Size: 1.02 KB

Versions: 1

Compression:

Stored size: 1.02 KB

Contents

module Calendlyr
  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 TooManyRequestsEror < StandardError; end

  class ResponseErrorHandler
    ERROR_TYPES = {
      "400" => BadRequest,
      "401" => Unauthenticated,
      "403" => PermissionDenied,
      "404" => NotFound,
      "424" => ExternalCalendarEror,
      "429" => TooManyRequestsEror,
      "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

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
calendlyr-0.7.1 lib/calendlyr/error.rb