Class: Peddler::Transport

Inherits:
Object
  • Object
show all
Defined in:
lib/peddler/transport.rb

Overview

 Our work horse. Runs on top of Net::HTTP.

Constant Summary collapse

API_HOSTS =
{:us => "secure.amazon.com",
:uk => "secure.amazon.co.uk",
:de => "secure.amazon.de",
:ca => "secure.amazon.ca",
:fr => "secure.amazon.fr",
:jp => "vendornet.amazon.co.jp" }
BASE_HEADERS =
{"User-Agent"    => "Peddler/#{Peddler::VERSION}",
"Content-Type"  => "text/xml;charset=utf-8",
"Cookie"        => "x-main=YvjPkwfntqDKun0QEmVRPcTTZDMe?Tn?; ubid-main=002-8989859-9917520; ubid-tacbus=019-5423258-4241018;x-tacbus=vtm4d53DvX@Sc9LxTnAnxsFL3DorwxJa; ubid-tcmacb=087-8055947-0795529; ubid-ty2kacbus=161-5477122-2773524; session-id=087-178254-5924832;session-id-time=950660664"}
BASE_PARAMS =
{
  "Service" => "MerchantQueryService"
}

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#bodyObject

Returns the value of attribute body.



25
26
27
# File 'lib/peddler/transport.rb', line 25

def body
  @body
end

#headersObject

Returns the value of attribute headers.



25
26
27
# File 'lib/peddler/transport.rb', line 25

def headers
  @headers
end

#password=(value) ⇒ Object (writeonly)

Sets the attribute password

Parameters:

  • value

    the value to set the attribute password to.



24
25
26
# File 'lib/peddler/transport.rb', line 24

def password=(value)
  @password = value
end

#pathObject

Returns the value of attribute path.



25
26
27
# File 'lib/peddler/transport.rb', line 25

def path
  @path
end

#query_paramsObject

Returns the value of attribute query_params.



25
26
27
# File 'lib/peddler/transport.rb', line 25

def query_params
  @query_params
end

#username=(value) ⇒ Object (writeonly)

Sets the attribute username

Parameters:

  • value

    the value to set the attribute username to.



24
25
26
# File 'lib/peddler/transport.rb', line 24

def username=(value)
  @username = value
end

Instance Method Details

#clear_requestObject



56
57
58
59
# File 'lib/peddler/transport.rb', line 56

def clear_request
  self.headers = BASE_HEADERS.dup
  self.body = ""
end

#dump_headers(msg) ⇒ Object



87
88
89
90
91
# File 'lib/peddler/transport.rb', line 87

def dump_headers(msg)
  msg.each_header do |key, value|
    p "#{key}=#{value}"
  end
end

#execute_requestObject



42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/peddler/transport.rb', line 42

def execute_request
  begin
    self.conn.start do |http|
      res = http.request(self.request)
      case res
      when Net::HTTPSuccess
        res.body
      else
        raise PeddlerError.new(res.body)
      end
    end
  end
end

#legacize_requestObject



61
62
63
64
65
# File 'lib/peddler/transport.rb', line 61

def legacize_request
  self.clear_request
  self.path = "/exec/panama/seller-admin/"
  self.query_params = {}
end

#modernize_requestObject



67
68
69
70
71
# File 'lib/peddler/transport.rb', line 67

def modernize_request
  self.clear_request
  self.path = "/query/"
  self.query_params = BASE_PARAMS.dup
end

#region=(region) ⇒ Object



73
74
75
76
77
78
79
80
81
# File 'lib/peddler/transport.rb', line 73

def region=(region)
  @conn = nil
  region = region.to_sym
  if API_HOSTS.has_key?(region)
    @region = region
  else
    raise PeddlerError.new("Region not recognized")
  end
end

#requestObject

Returns request instance



28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/peddler/transport.rb', line 28

def request
  req = request_method.new("#{self.path.gsub(/\/$/, "")}/#{self.query_string}")
  self.headers.each do |header, value|
    if header.kind_of? Symbol
      req[header.to_s.gsub(/_/, "")] = value
    else
      req[header] = value
    end
  end
  req.basic_auth(@username, @password) if @username && @password
  req.body = self.body unless self.body.empty?
  req
end

#urlObject



83
84
85
# File 'lib/peddler/transport.rb', line 83

def url
  URI.parse("https://#{self.host}#{self.path.gsub(/\/$/, "")}/#{self.query_string}")
end