class MidtransApi::Middleware::HandleResponseException
Constants
- VALID_STATUSES
Public Class Methods
new(app)
click to toggle source
Calls superclass method
# File lib/midtrans_api/middleware/handle_response_exception.rb, line 8 def initialize(app) super(app) end
Public Instance Methods
call(env)
click to toggle source
# File lib/midtrans_api/middleware/handle_response_exception.rb, line 12 def call(env) @app.call(env).on_complete do |response| validate_response(response.body) end end
Private Instance Methods
validate_response(response)
click to toggle source
rubocop:disable Metrics/CyclomaticComplexity
# File lib/midtrans_api/middleware/handle_response_exception.rb, line 21 def validate_response(response) json_response = JSON.parse(response) return true if VALID_STATUSES.include?(json_response['status_code']) case json_response['status_code'] when '202' raise MidtransApi::Errors::PaymentDenied, json_response['status_message'] when '300' raise MidtransApi::Errors::MovePermanently, json_response['status_message'] when '400' raise MidtransApi::Errors::ValidationError, json_response['validation_messages'].first when '401' raise MidtransApi::Errors::AccessDenied, json_response['status_message'] when '402' raise MidtransApi::Errors::UnauthorizedPayment, json_response['status_message'] when '403' raise MidtransApi::Errors::ForbiddenRequest, json_response['status_message'] when '404' raise MidtransApi::Errors::NotFound, json_response['status_message'] when '405' raise MidtransApi::Errors::HttpNotAllowed, json_response['status_message'] when '406' raise MidtransApi::Errors::DuplicateOrderId, json_response['status_message'] when '408' raise MidtransApi::Errors::WrongDataType, json_response['status_message'] when '409' raise MidtransApi::Errors::ManySameCardNumber, json_response['status_message'] when '410' raise MidtransApi::Errors::MerchantAccountDeactivated, json_response['status_message'] when '411' raise MidtransApi::Errors::ErrorTokenId, json_response['status_message'] when '412' raise MidtransApi::Errors::CannotModifyTransaction, json_response['status_message'] when '413' raise MidtransApi::Errors::MalformedSyntax, json_response['status_message'] when '414' raise MidtransApi::Errors::RefundInvalidAmount, json_response['status_message'] when '500' raise MidtransApi::Errors::InternalServerError, json_response['status_message'] when '501' raise MidtransApi::Errors::FeatureNotAvailable, json_response['status_message'] when '502' raise MidtransApi::Errors::BankConnectionProblem, json_response['status_message'] when '503' raise MidtransApi::Errors::PartnerConnectionIssue, json_response['status_message'] when '504' raise MidtransApi::Errors::FraudDetectionUnavailable, json_response['status_message'] when '505' raise MidtransApi::Errors::PaymentReferenceUnavailable, json_response['status_message'] else raise MidtransApi::Errors::UnknownError, json_response['status_message'] end end