Sha256: 3a437458709e7b235babd51222b23f42a153e7a42c8e7ad9b16d8cc167121adb

Contents?: true

Size: 962 Bytes

Versions: 1

Compression:

Stored size: 962 Bytes

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 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

Version data entries

1 entries across 1 versions & 1 rubygems

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