Sha256: 9ed94c0d7ba5d574ec55749202edcbb4957715a3fbfce4511e60d067bc696c72

Contents?: true

Size: 978 Bytes

Versions: 2

Compression:

Stored size: 978 Bytes

Contents

# frozen_string_literal: true

module FriendlyShipping
  module Services
    class ShipEngine
      # Parses the API response for voiding a label.
      class ParseVoidResponse
        extend Dry::Monads::Result::Mixin

        # @param request [Request] the request to attach to the API result
        # @param response [Response] the response to parse
        # @return [Success<ApiResult<String>>, Failure<ApiResult<String>>] the success or failure message
        def self.call(request:, response:)
          parsed_json = JSON.parse(response.body)
          approved, message = parsed_json["approved"], parsed_json["message"]
          if approved
            Success(
              ApiResult.new(message, original_request: request, original_response: response)
            )
          else
            Failure(
              ApiResult.new(message, original_request: request, original_response: response)
            )
          end
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
friendly_shipping-0.10.1 lib/friendly_shipping/services/ship_engine/parse_void_response.rb
friendly_shipping-0.10.0 lib/friendly_shipping/services/ship_engine/parse_void_response.rb