Class: DHLGM::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/dhlgm-track/client.rb

Instance Method Summary collapse

Instance Method Details

#request(request, &block) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/dhlgm-track/client.rb', line 11

def request(request, &block)
  response = Typhoeus::Request.get(tracking_api_url, {
    timeout: DHLGM.config.timeout,
    params: {
      uname:  DHLGM.config.username,
      pass:   DHLGM.config.password,
    }.merge(request.api_params)
  })

  # Parse the request
  xml = Nokogiri::XML.parse(response.body)

  if (error = xml.search('error')).any?
    code = error.search('code').text
    description = error.search('description').text

    raise Error.for_code(code).new(code, description)
  end

  request.response_handler(xml)
end