Sha256: ba158a5d4c3e55872e378f7c918e28a791b400b46d59bd9f60412c9aa45c7301

Contents?: true

Size: 1.5 KB

Versions: 5

Compression:

Stored size: 1.5 KB

Contents

# frozen_string_literal: true

module Fawry
  class FawryRequest
    DEFAULT_OPTIONS = { sandbox: false }.freeze

    attr_reader :action, :params, :request, :options

    def initialize(action, params, opts)
      @action = action
      @params = params
      @options = DEFAULT_OPTIONS.merge(opts)

      build_request
    end

    private

    # rubocop:disable Metrics/MethodLength
    # rubocop:disable Metrics/AbcSize
    def build_request
      case action
      when 'charge'
        self.class.include Requests::ChargeRequest
        validate_charge_params!
        @request = build_charge_request
      when 'refund'
        self.class.include Requests::RefundRequest
        validate_refund_params!
        @request = build_refund_request
      when 'payment_status'
        self.class.include Requests::PaymentStatusRequest
        validate_payment_status_params!
        @request = build_payment_status_request
      when 'create_card_token'
        self.class.include Requests::CreateCardTokenRequest
        validate_card_token_params!
        @request = build_create_card_token_request
      when 'list_tokens'
        self.class.include Requests::ListTokensRequest
        validate_list_tokens_params!
        @request = build_list_tokens_request
      when 'delete_token'
        self.class.include Requests::DeleteTokenRequest
        validate_delete_token_params!
        @request = build_delete_token_request
      end
      # rubocop:enable Metrics/AbcSize
      # rubocop:enable Metrics/MethodLength
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
fawry-1.4.1 lib/fawry/fawry_request.rb
fawry-1.4.0 lib/fawry/fawry_request.rb
fawry-1.3.1 lib/fawry/fawry_request.rb
fawry-1.3.0 lib/fawry/fawry_request.rb
fawry-1.2.1 lib/fawry/fawry_request.rb