Sha256: ca84244227f0671e5b0bbc61f3d0571423974f87c117f45c8dd711914fd41c4f

Contents?: true

Size: 925 Bytes

Versions: 2

Compression:

Stored size: 925 Bytes

Contents

module CGIParty
  class Request
    def initialize(savon_client, ip_address = nil, options)
      @options = fetch_options(options, available_options)
      @savon_client = savon_client
      @ip_address = ip_address
    end

    def execute
      response = @savon_client.call(action_name, message: message_hash, message_tag: message_tag, soap_action: false)
      serialize_data(response.body)
    end

    private

    def fetch_options(options, available_options)
      available_options.each do |option_name|
        options[option_name] ||= CGIParty.config.public_send(option_name)
      end

      options
    end

    # Only works for single word actions
    def action_name
      message_tag[/(.*)(?:Request)/, 1].downcase.to_sym
    end

    def message_tag
      self.class.name.gsub(/^.*::/, '')
    end

    def end_user_info
      {
        type: 'IP_ADDR',
        value: @ip_address
      }
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
cgi_party-2.0.1 lib/cgi_party/request.rb
cgi_party-2.0.0 lib/cgi_party/request.rb