Module: UspsCall

Defined in:
lib/usps_ruby/web_interface/usps_call.rb

Class Method Summary collapse

Class Method Details

.parse_xml_request(xml) ⇒ Object



35
36
37
# File 'lib/usps_ruby/web_interface/usps_call.rb', line 35

def self.parse_xml_request(xml)
  return xml.to_xml(:save_with => Nokogiri::XML::Node::SaveOptions::AS_XML | Nokogiri::XML::Node::SaveOptions::NO_DECLARATION).strip.gsub("\"","\'").gsub(" ","%20")
end

.response(tracking_number, usps_id, usps_password) ⇒ Object

This method gets called by main class DHLMemnosyne. It makes actual http request to get the shipment details.



9
10
11
12
13
14
15
# File 'lib/usps_ruby/web_interface/usps_call.rb', line 9

def self.response(tracking_number,usps_id,usps_password)
  uri            = URI.parse 'production.shippingapis.com'
  http           = Net::HTTP.new uri.host, uri.port
  http.use_ssl, http.verify_mode = use_ssl?(uri)
  request = usps_request(tracking_number,usps_id,usps_password)
  return Net::HTTP.get(uri.path, request)
end

.use_ssl?(uri) ⇒ Boolean

Returns:

  • (Boolean)


30
31
32
33
# File 'lib/usps_ruby/web_interface/usps_call.rb', line 30

def self.use_ssl?(uri)
  uri.port == 443 ?
  (return true, OpenSSL::SSL::VERIFY_NONE) : (return false, OpenSSL::SSL::VERIFY_NONE)
end

.usps_request(tracking_number, usps_id, usps_password) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/usps_ruby/web_interface/usps_call.rb', line 17

def self.usps_request(tracking_number,usps_id,usps_password)
  require 'rubygems'
  require 'nokogiri'
  method = "/ShippingAPI.dll?API=TrackV2&XML="
  xml_request = Nokogiri::XML::Builder.new do |xml|
      xml.TrackFieldRequest('USERID' => usps_id, 'PASSWORD' => usps_password) {
        xml.TrackID('ID' => tracking_number){
        }
      }
  end
  method +  parse_xml_request(xml_request) 
end