lib/paddle/error.rb in paddle-2.3.0 vs lib/paddle/error.rb in paddle-2.4.0
- old
+ new
@@ -1,127 +1,4 @@
module Paddle
class Error < StandardError
- attr_reader :http_status_code
- attr_reader :paddle_error_code
- attr_reader :paddle_error_message
-
- def initialize(response_body, http_status_code)
- @response_body = response_body
- @http_status_code = http_status_code
- set_paddle_error_values
- super(build_message)
- end
-
- private
-
- def set_paddle_error_values
- @paddle_error_code = @response_body.dig("error", "code")
- @paddle_error_message = @response_body.dig("error", "detail")
- end
-
- def error_message
- @paddle_error_message || @response_body.dig("error", "code")
- rescue NoMethodError
- "An unknown error occurred."
- end
-
- def build_message
- if paddle_error_code.nil?
- return "Error #{@http_status_code}: #{error_message}"
- end
- "Error #{@http_status_code}: #{error_message} '#{paddle_error_code}'"
- end
- end
-
- class BadRequestError < Error
- private
-
- def error_message
- "Your request was malformed."
- end
- end
-
- class AuthenticationMissingError < Error
- private
-
- def error_message
- "You did not supply valid authentication credentials."
- end
- end
-
- class ForbiddenError < Error
- private
-
- def error_message
- "You are not allowed to perform that action."
- end
- end
-
- class EntityNotFoundError < Error
- private
-
- def error_message
- "No results were found for your request."
- end
- end
-
- class ConflictError < Error
- private
-
- def error_message
- "Your request was a conflict."
- end
- end
-
- class TooManyRequestsError < Error
- private
-
- def error_message
- "Your request exceeded the API rate limit."
- end
- end
-
- class InternalError < Error
- private
-
- def error_message
- "We were unable to perform the request due to server-side problems."
- end
- end
-
- class ServiceUnavailableError < Error
- private
-
- def error_message
- "You have been rate limited for sending more than 20 requests per second."
- end
- end
-
- class NotImplementedError < Error
- private
-
- def error_message
- "This resource has not been implemented."
- end
- end
-
-
- class ErrorFactory
- HTTP_ERROR_MAP = {
- 400 => BadRequestError,
- 401 => AuthenticationMissingError,
- 403 => ForbiddenError,
- 404 => EntityNotFoundError,
- 409 => ConflictError,
- 429 => TooManyRequestsError,
- 500 => InternalError,
- 503 => ServiceUnavailableError,
- 501 => NotImplementedError
- }.freeze
-
- def self.create(response_body, http_status_code)
- status = http_status_code
- error_class = HTTP_ERROR_MAP[status] || Error
- error_class.new(response_body, http_status_code) if error_class
- end
end
end