dhl 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: fa40048126f12bd3fc7c5ed6c7d6f57801961ab5
4
- data.tar.gz: 591643d4d78424fdd97b645735bb40e1ab5c118a
3
+ metadata.gz: 81e44d3866f0e9e8828949e718a7595c509accd9
4
+ data.tar.gz: b7838a59097a68491e29e2e72569a130e8af03e4
5
5
  SHA512:
6
- metadata.gz: 12afcfbbeee3de8265bd66bd737d20f25f239f1a6cf1e946f8ec200344fa292569bd6523d9aa2658299fc0e568c1c95acf5d8a13b5677290112114d64102b180
7
- data.tar.gz: 393580cbca56eaabf094bdea4092e80b501de3a4018c7a918471fd17466cde9f31c736e46ea324b2cf92f30299301e96dc6527a443a04266b9a568b1689898f9
6
+ metadata.gz: 78080d4e41414a7aa5925ba76f4c0da13a2489a7045ef0e83b7a00c5b37d9357248bec0e1d24e714854ea9188fbc0fff51173905deb8ecda84ae916a548b2cc3
7
+ data.tar.gz: a091dec5328b941e9978c85c8a8bdd2a83af617b378b2154876fe0c012096189d903f5d43c7fb2f61666e6c5daf470803662b9f7868bdcb3f9558e3cdc02736d
data/.gitignore CHANGED
@@ -15,3 +15,5 @@ spec/reports
15
15
  test/tmp
16
16
  test/version_tmp
17
17
  tmp
18
+ .ruby-gemset
19
+ .ruby-version
data/Gemfile CHANGED
@@ -1,22 +1,4 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- # Specify your gem's dependencies in dhl.gemspec
4
- gemspec
5
-
6
-
7
- source 'https://rubygems.org'
8
-
9
- gem 'savon', '~> 2.2.0'
10
-
11
- group :test do
12
- gem 'factory_girl', '~> 4.2.0'
13
- gem 'webmock', "~> 1.9.0"
14
- gem 'vcr', "~> 2.4.0"
15
- # gem 'turn'
16
- gem 'rake'
17
- gem 'rspec', "~> 2.13.0"
18
- gem 'pry'
19
- end
20
-
21
3
  # Specify your gem's dependencies in the_tvdb.gemspec
22
4
  gemspec
data/README.md CHANGED
@@ -1,6 +1,7 @@
1
1
  # DHL
2
2
 
3
3
  [![Build Status](https://travis-ci.org/momitians/dhl.png?branch=master)](https://travis-ci.org/momitians/dhl)
4
+ [![Dependency Status](https://gemnasium.com/momitians/dhl.png)](https://gemnasium.com/momitians/dhl)
4
5
  [![Code Climate](https://codeclimate.com/github/momitians/dhl.png)](https://codeclimate.com/github/momitians/dhl)
5
6
 
6
7
  This gem will provide a wrapper to DHL SOAP API. Given DHL credentials and the addresses, will generate a shipping label.
@@ -24,6 +24,7 @@ Gem::Specification.new do |spec|
24
24
  spec.add_development_dependency "rake"
25
25
  spec.add_development_dependency "rspec", "~> 2.13.0"
26
26
  spec.add_development_dependency "factory_girl", "~> 4.2.0"
27
- spec.add_development_dependency "vcr", "~> 2.4.0"
28
- spec.add_development_dependency "webmock", "~> 1.9.0"
27
+ spec.add_development_dependency "vcr", "~> 2.5.0"
28
+ spec.add_development_dependency "webmock", "~> 1.11.0"
29
+ spec.add_development_dependency "pry", "~> 0.9.12"
29
30
  end
data/lib/dhl.rb CHANGED
@@ -7,7 +7,8 @@ require "dhl/packages"
7
7
  require "dhl/package"
8
8
  require "dhl/shipment"
9
9
  require "dhl/shipment_request"
10
- require "dhl/tracking_request"
10
+ require "dhl/tracking"
11
+ require "dhl/error"
11
12
 
12
13
  require "dhl/version"
13
14
 
@@ -9,7 +9,10 @@ module Dhl
9
9
  {
10
10
  wsse_auth: [config.username, config.password],
11
11
  wsse_timestamp: true,
12
- convert_request_keys_to: :camelcase
12
+ convert_request_keys_to: :camelcase,
13
+ namespaces: {
14
+ "xmlns:dhl" => "http://www.dhl.com"
15
+ }
13
16
  }
14
17
  end
15
18
 
@@ -43,9 +46,10 @@ module Dhl
43
46
  def request_shipment(shipment_request)
44
47
  response = requests_soap_client.call(:create_shipment_request, message: shipment_request.to_hash )
45
48
 
46
- if response.body[:shipment_response][:notification][:@code] != '0'
47
- raise "Error: #{response.body[:shipment_response][:notification][:message]}"
48
- end
49
+ data = response.body[:shipment_response][:notification]
50
+ notification = data.include?(:@code) ? data : data.first
51
+
52
+ raise Dhl::Error::Generic.new(notification[:@code], notification[:message]) unless notification[:@code] == '0'
49
53
 
50
54
  result = {}
51
55
 
@@ -59,15 +63,15 @@ module Dhl
59
63
  end
60
64
 
61
65
  package_result = response.body[:shipment_response][:packages_result][:package_result]
62
- result[:tracking_numbers] = package_result.is_a?(Array) ? package_result.map{|r| r[:tracking_number]} : package_result[:tracking_number]
66
+ result[:tracking_number] = shipment_identification_number
63
67
 
64
68
  result
65
69
  end
66
70
 
67
- def track(numbers)
68
- request = Dhl::TrackingRequest.new(numbers)
71
+ def track(number)
72
+ request = Tracking::Request.new(number)
69
73
  response = tracking_soap_client.call(:track_shipment_request, message: request.to_hash)
70
- response.body
74
+ Tracking::Response.new(response.body)
71
75
  end
72
76
 
73
77
  # def request_rate
@@ -0,0 +1,6 @@
1
+ require "dhl/error/generic"
2
+
3
+ module Dhl
4
+ module Error
5
+ end
6
+ end
@@ -0,0 +1,19 @@
1
+ module Dhl
2
+ module Error
3
+ class Generic < StandardError
4
+
5
+ attr_reader :code, :description
6
+
7
+ def initialize(code, description)
8
+ @code, @description = code, description
9
+ end
10
+
11
+ def message
12
+ string = "Error #{code}"
13
+ string << ": #{description}" if !description.blank?
14
+ string
15
+ end
16
+
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,9 @@
1
+ require "dhl/tracking/request"
2
+ require "dhl/tracking/response"
3
+ require "dhl/tracking/event"
4
+ require "dhl/tracking/shipment_info"
5
+
6
+ module Dhl
7
+ module Tracking
8
+ end
9
+ end
@@ -0,0 +1,22 @@
1
+ module Dhl
2
+ module Tracking
3
+ class Event
4
+
5
+ attr_accessor :datetime, :signatory, :code, :description, :shipper_reference, :area_code, :area_name
6
+
7
+ def initialize(data)
8
+ @datetime = Time.parse("#{data[:date].to_s} #{data[:time].to_s}")
9
+ @signatory = data[:signatory]
10
+ @code = data[:service_event][:event_code]
11
+ @description = data[:service_event][:description]
12
+ @shipper_reference = data[:shipper_reference]
13
+ @area_code = data[:service_area][:service_area_code]
14
+ @area_name = data[:service_area][:description]
15
+ end
16
+
17
+ def delivered?
18
+ @code == 'OK'
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,35 @@
1
+ module Dhl
2
+ module Tracking
3
+ class Request
4
+
5
+ attr_accessor :tracking_number
6
+
7
+ # Accepts and array of tracking numbers
8
+ def initialize(number)
9
+ @tracking_number = number
10
+ end
11
+
12
+ def to_hash
13
+ {
14
+ 'trackingRequest' => {
15
+ 'dhl:TrackingRequest' => {
16
+ request: {
17
+ service_header: {
18
+ message_time: Time.now.strftime('%Y-%m-%dT%H:%M:%S%:z'),
19
+ message_reference: '1234567890123456789012345678' # Ref between 28 and 32 characters
20
+ }
21
+ },
22
+ a_w_b_number: {
23
+ array_of_a_w_b_number_item: @tracking_number
24
+ },
25
+ # lp_number: nil, # Inactive in API
26
+ level_of_details: 'ALL_CHECK_POINTS', # LAST_CHECK_POINT_ONLY for partial tracking
27
+ pieces_enabled: 'B' # B for Both, S for shipment details only, P for piece details only
28
+ }
29
+ }
30
+ }
31
+ end
32
+
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,30 @@
1
+ module Dhl
2
+ module Tracking
3
+ class Response
4
+
5
+ # attr_accessor :shipper, :recipient, :packages, :shipment
6
+ # attr_accessor :pieces
7
+ attr_accessor :shipment_info, :events
8
+
9
+ def initialize(data)
10
+ @data = data
11
+ @shipment_info = ShipmentInfo.new(@data)
12
+ @events = get_events
13
+ end
14
+
15
+ def delivered?
16
+ @events.first.delivered?
17
+ end
18
+
19
+ protected
20
+ def get_events
21
+ collection = @data[:track_shipment_request_response][:tracking_response][:tracking_response][:awb_info][:array_of_awb_info_item][:pieces][:piece_info][:array_of_piece_info_item][:piece_event][:array_of_piece_event_item]
22
+ [collection].flatten.map do |element|
23
+ Event.new(element)
24
+ end
25
+ rescue
26
+ []
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,10 @@
1
+ module Dhl
2
+ module Tracking
3
+ class ShipmentInfo
4
+ def initialize(data)
5
+ @data = data
6
+ # TODO: do useful stuff here
7
+ end
8
+ end
9
+ end
10
+ end
@@ -1,3 +1,3 @@
1
1
  module Dhl
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
@@ -0,0 +1,770 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://wsbuat.dhl.com:8300/gbl/glDHLExpressTrack?WSDL
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ Accept-Encoding:
11
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
12
+ Accept:
13
+ - '*/*'
14
+ User-Agent:
15
+ - Ruby
16
+ response:
17
+ status:
18
+ code: 200
19
+ message: OK
20
+ headers:
21
+ Date:
22
+ - Sat, 01 Jun 2013 07:10:35 GMT
23
+ Server:
24
+ - ACE XML Gateway
25
+ Content-Type:
26
+ - text/xml
27
+ Content-Length:
28
+ - '18870'
29
+ body:
30
+ encoding: UTF-8
31
+ string: "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<wsdl:definitions xmlns:s0=\"http://www.dhl.com\"
32
+ xmlns:mime=\"http://schemas.xmlsoap.org/wsdl/mime/\" xmlns:soapenc=\"http://schemas.xmlsoap.org/soap/encoding/\"
33
+ xmlns:http=\"http://schemas.xmlsoap.org/wsdl/http/\" xmlns:tm=\"http://microsoft.com/wsdl/mime/textMatching/\"
34
+ xmlns:tns=\"http://scxgxtt.phx-dc.dhl.com/glDHLExpressTrack/providers/services/trackShipment\"
35
+ xmlns:soap12=\"http://schemas.xmlsoap.org/wsdl/soap12/\" xmlns:soap=\"http://schemas.xmlsoap.org/wsdl/soap/\"
36
+ xmlns:s1=\"http://www.reactivity.com/xsdbundle/\" xmlns:wsdl=\"http://schemas.xmlsoap.org/wsdl/\"
37
+ xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" targetNamespace=\"http://scxgxtt.phx-dc.dhl.com/glDHLExpressTrack/providers/services/trackShipment\"><wsdl:types><xsd:schema
38
+ targetNamespace=\"http://www.dhl.com\">\n \n <xsd:import
39
+ namespace=\"http://scxgxtt.phx-dc.dhl.com/glDHLExpressTrack/providers/services/trackShipment\"/>\n
40
+ \ <xsd:element name=\"TrackingRequest\" type=\"s0:TrackingRequest\"/>\n
41
+ \ <xsd:element name=\"TrackingResponse\" type=\"s0:TrackingResponse\"/>\n
42
+ \ <xsd:complexType name=\"TrackingRequest\">\n <xsd:sequence>\n
43
+ \ <xsd:element name=\"Request\" type=\"s0:Request\"/>\n <xsd:element
44
+ minOccurs=\"0\" name=\"AWBNumber\" type=\"s0:ArrayOfAWBNumber\"/>\n <xsd:element
45
+ minOccurs=\"0\" name=\"LPNumber\" type=\"s0:ArrayOfTrackingPieceID\"/>\n <xsd:element
46
+ name=\"LevelOfDetails\" type=\"s0:LevelOfDetails\"/>\n <xsd:element
47
+ minOccurs=\"0\" name=\"PiecesEnabled\" type=\"tns:PiecesEnabled\"/>\n </xsd:sequence>\n
48
+ \ </xsd:complexType>\n <xsd:complexType name=\"Request\">\n
49
+ \ <xsd:sequence>\n <xsd:element name=\"ServiceHeader\"
50
+ type=\"s0:ServiceHeader\"/>\n </xsd:sequence>\n </xsd:complexType>\n
51
+ \ <xsd:complexType name=\"ServiceHeader\">\n <xsd:sequence>\n
52
+ \ <xsd:element name=\"MessageTime\" type=\"xsd:dateTime\"/>\n
53
+ \ <xsd:element name=\"MessageReference\" type=\"s0:MessageReference\"/>\n
54
+ \ </xsd:sequence>\n </xsd:complexType>\n <xsd:simpleType
55
+ name=\"MessageReference\">\n <xsd:restriction base=\"xsd:string\">\n
56
+ \ <xsd:whiteSpace value=\"preserve\"/>\n <xsd:minLength
57
+ value=\"28\"/>\n <xsd:maxLength value=\"32\"/>\n </xsd:restriction>\n
58
+ \ </xsd:simpleType>\n <xsd:simpleType name=\"AWBNumber\">\n
59
+ \ <xsd:restriction base=\"xsd:string\">\n <xsd:whiteSpace
60
+ value=\"preserve\"/>\n <xsd:maxLength value=\"11\"/>\n </xsd:restriction>\n
61
+ \ </xsd:simpleType>\n <xsd:complexType name=\"ArrayOfAWBNumber\">\n<xsd:sequence>\n\t\t\t<xsd:element
62
+ maxOccurs=\"unbounded\" name=\"ArrayOfAWBNumberItem\" type=\"s0:AWBNumber\"/>\n\t\t</xsd:sequence>\n\n
63
+ \ </xsd:complexType>\n <xsd:simpleType name=\"TrackingPieceID\">\n
64
+ \ <xsd:restriction base=\"xsd:string\">\n <xsd:whiteSpace
65
+ value=\"preserve\"/>\n <xsd:minLength value=\"1\"/>\n <xsd:maxLength
66
+ value=\"35\"/>\n </xsd:restriction>\n </xsd:simpleType>\n
67
+ \ <xsd:complexType name=\"ArrayOfTrackingPieceID\">\n<xsd:sequence>\n\t\t\t<xsd:element
68
+ maxOccurs=\"unbounded\" name=\"ArrayOfTrackingPieceIDItem\" type=\"s0:TrackingPieceID\"/>\n\t\t</xsd:sequence>\n\n
69
+ \ </xsd:complexType>\n <xsd:simpleType name=\"LevelOfDetails\">\n
70
+ \ <xsd:restriction base=\"xsd:string\">\n <xsd:whiteSpace
71
+ value=\"preserve\"/>\n <xsd:enumeration value=\"LAST_CHECK_POINT_ONLY\"/>\n
72
+ \ <xsd:enumeration value=\"ALL_CHECK_POINTS\"/>\n </xsd:restriction>\n
73
+ \ </xsd:simpleType>\n <xsd:complexType name=\"TrackingResponse\">\n
74
+ \ <xsd:sequence>\n <xsd:element name=\"Response\" type=\"s0:Response\"/>\n
75
+ \ <xsd:element name=\"AWBInfo\" type=\"s0:ArrayOfAWBInfo\"/>\n
76
+ \ <xsd:element minOccurs=\"0\" name=\"Fault\" type=\"s0:Fault\"/>\n
77
+ \ </xsd:sequence>\n </xsd:complexType>\n <xsd:complexType
78
+ name=\"Response\">\n <xsd:sequence>\n <xsd:element
79
+ name=\"ServiceHeader\" type=\"s0:ServiceHeader\"/>\n </xsd:sequence>\n
80
+ \ </xsd:complexType>\n <xsd:complexType name=\"AWBInfo\">\n
81
+ \ <xsd:sequence>\n <xsd:element name=\"AWBNumber\"
82
+ type=\"s0:AWBNumber\"/>\n <xsd:element name=\"Status\" type=\"s0:Status\"/>\n
83
+ \ <xsd:element minOccurs=\"0\" name=\"ShipmentInfo\" type=\"s0:ShipmentInfo\"/>\n
84
+ \ <xsd:element minOccurs=\"0\" name=\"Pieces\" type=\"s0:TrackingPieces\"/>\n
85
+ \ </xsd:sequence>\n </xsd:complexType>\n <xsd:complexType
86
+ name=\"Status\">\n <xsd:sequence>\n <xsd:element name=\"ActionStatus\"
87
+ type=\"xsd:string\"/>\n <xsd:element minOccurs=\"0\" name=\"Condition\"
88
+ type=\"s0:ArrayOfCondition\"/>\n </xsd:sequence>\n </xsd:complexType>\n
89
+ \ <xsd:complexType name=\"Condition\">\n <xsd:sequence>\n
90
+ \ <xsd:element name=\"ConditionCode\" type=\"xsd:string\"/>\n
91
+ \ <xsd:element minOccurs=\"0\" name=\"ConditionData\" type=\"xsd:string\"/>\n
92
+ \ </xsd:sequence>\n </xsd:complexType>\n <xsd:complexType
93
+ name=\"ArrayOfCondition\">\n<xsd:sequence>\n\t\t\t<xsd:element maxOccurs=\"unbounded\"
94
+ name=\"ArrayOfConditionItem\" type=\"s0:Condition\"/>\n\t\t</xsd:sequence>\n\n
95
+ \ </xsd:complexType>\n <xsd:complexType name=\"ShipmentInfo\">\n
96
+ \ <xsd:sequence>\n <xsd:element name=\"OriginServiceArea\"
97
+ type=\"s0:OriginServiceArea\"/>\n <xsd:element name=\"DestinationServiceArea\"
98
+ type=\"s0:DestinationServiceArea\"/>\n <xsd:element name=\"ShipperName\"
99
+ type=\"s0:PersonName\"/>\n <xsd:element minOccurs=\"0\" name=\"ShipperAccountNumber\"
100
+ type=\"s0:AccountNumber\"/>\n <xsd:element name=\"ConsigneeName\"
101
+ type=\"s0:PersonName\"/>\n <xsd:element name=\"ShipmentDate\"
102
+ type=\"xsd:dateTime\"/>\n <xsd:element minOccurs=\"0\" name=\"Pieces\"
103
+ type=\"xsd:string\"/>\n <xsd:element minOccurs=\"0\" name=\"Weight\"
104
+ type=\"xsd:string\"/>\n <xsd:element minOccurs=\"0\" name=\"WeightUnit\"
105
+ type=\"tns:WeightUnit\"/>\n <xsd:element minOccurs=\"0\" name=\"ShipmentEvent\"
106
+ type=\"s0:ArrayOfShipmentEvent\"/>\n <xsd:element minOccurs=\"0\"
107
+ name=\"ShipperReference\" type=\"s0:Reference\"/>\n </xsd:sequence>\n
108
+ \ </xsd:complexType>\n <xsd:complexType name=\"OriginServiceArea\">\n
109
+ \ <xsd:sequence>\n <xsd:element minOccurs=\"0\" name=\"ServiceAreaCode\"
110
+ type=\"s0:ServiceAreaCode\"/>\n <xsd:element minOccurs=\"0\"
111
+ name=\"Description\" type=\"xsd:string\"/>\n <xsd:element minOccurs=\"0\"
112
+ name=\"OutboundSortCode\" type=\"s0:OutboundSortCode\"/>\n </xsd:sequence>\n
113
+ \ </xsd:complexType>\n <xsd:simpleType name=\"ServiceAreaCode\">\n
114
+ \ <xsd:restriction base=\"xsd:string\">\n <xsd:whiteSpace
115
+ value=\"preserve\"/>\n <xsd:length value=\"3\"/>\n </xsd:restriction>\n
116
+ \ </xsd:simpleType>\n <xsd:simpleType name=\"OutboundSortCode\">\n
117
+ \ <xsd:restriction base=\"xsd:string\">\n <xsd:whiteSpace
118
+ value=\"preserve\"/>\n <xsd:length value=\"4\"/>\n </xsd:restriction>\n
119
+ \ </xsd:simpleType>\n <xsd:complexType name=\"DestinationServiceArea\">\n
120
+ \ <xsd:sequence>\n <xsd:element minOccurs=\"0\" name=\"ServiceAreaCode\"
121
+ type=\"s0:ServiceAreaCode\"/>\n <xsd:element minOccurs=\"0\"
122
+ name=\"Description\" type=\"xsd:string\"/>\n <xsd:element minOccurs=\"0\"
123
+ name=\"FacilityCode\" type=\"s0:FacilityCode\"/>\n <xsd:element
124
+ minOccurs=\"0\" name=\"InboundSortCode\" type=\"s0:InboundSortCode\"/>\n </xsd:sequence>\n
125
+ \ </xsd:complexType>\n <xsd:simpleType name=\"FacilityCode\">\n
126
+ \ <xsd:restriction base=\"xsd:string\">\n <xsd:whiteSpace
127
+ value=\"preserve\"/>\n <xsd:length value=\"3\"/>\n </xsd:restriction>\n
128
+ \ </xsd:simpleType>\n <xsd:simpleType name=\"InboundSortCode\">\n
129
+ \ <xsd:restriction base=\"xsd:string\">\n <xsd:whiteSpace
130
+ value=\"preserve\"/>\n <xsd:length value=\"4\"/>\n </xsd:restriction>\n
131
+ \ </xsd:simpleType>\n <xsd:simpleType name=\"PersonName\">\n
132
+ \ <xsd:restriction base=\"xsd:string\">\n <xsd:whiteSpace
133
+ value=\"preserve\"/>\n <xsd:maxLength value=\"35\"/>\n </xsd:restriction>\n
134
+ \ </xsd:simpleType>\n <xsd:simpleType name=\"AccountNumber\">\n
135
+ \ <xsd:restriction base=\"xsd:positiveInteger\">\n <xsd:minInclusive
136
+ value=\"100000000\"/>\n <xsd:maxInclusive value=\"9999999999\"/>\n
137
+ \ </xsd:restriction>\n </xsd:simpleType>\n <xsd:complexType
138
+ name=\"ShipmentEvent\">\n <xsd:sequence>\n <xsd:element
139
+ name=\"Date\" type=\"xsd:date\"/>\n <xsd:element name=\"Time\"
140
+ type=\"xsd:time\"/>\n <xsd:element name=\"ServiceEvent\" type=\"s0:ServiceEvent\"/>\n
141
+ \ <xsd:element minOccurs=\"0\" name=\"Signatory\" type=\"tns:Signatory\"/>\n
142
+ \ <xsd:element name=\"ServiceArea\" type=\"s0:ServiceArea\"/>\n
143
+ \ </xsd:sequence>\n </xsd:complexType>\n <xsd:complexType
144
+ name=\"ServiceEvent\">\n <xsd:sequence>\n <xsd:element
145
+ name=\"EventCode\" type=\"tns:EventCode\"/>\n <xsd:element minOccurs=\"0\"
146
+ name=\"Description\" type=\"xsd:string\"/>\n </xsd:sequence>\n
147
+ \ </xsd:complexType>\n <xsd:complexType name=\"ServiceArea\">\n
148
+ \ <xsd:sequence>\n <xsd:element minOccurs=\"0\" name=\"ServiceAreaCode\"
149
+ type=\"s0:ServiceAreaCode\"/>\n <xsd:element minOccurs=\"0\"
150
+ name=\"Description\" type=\"xsd:string\"/>\n </xsd:sequence>\n
151
+ \ </xsd:complexType>\n <xsd:complexType name=\"ArrayOfShipmentEvent\">\n<xsd:sequence>\n\t\t\t<xsd:element
152
+ maxOccurs=\"unbounded\" name=\"ArrayOfShipmentEventItem\" type=\"s0:ShipmentEvent\"/>\n\t\t</xsd:sequence>\n\n
153
+ \ </xsd:complexType>\n <xsd:complexType name=\"Reference\">\n
154
+ \ <xsd:sequence>\n <xsd:element name=\"ReferenceID\"
155
+ type=\"s0:ReferenceID\"/>\n <xsd:element minOccurs=\"0\" name=\"ReferenceType\"
156
+ type=\"s0:ReferenceType\"/>\n </xsd:sequence>\n </xsd:complexType>\n
157
+ \ <xsd:simpleType name=\"ReferenceID\">\n <xsd:restriction
158
+ base=\"xsd:string\">\n <xsd:whiteSpace value=\"preserve\"/>\n
159
+ \ <xsd:maxLength value=\"35\"/>\n </xsd:restriction>\n
160
+ \ </xsd:simpleType>\n <xsd:simpleType name=\"ReferenceType\">\n
161
+ \ <xsd:restriction base=\"xsd:string\">\n <xsd:whiteSpace
162
+ value=\"preserve\"/>\n <xsd:length value=\"2\"/>\n </xsd:restriction>\n
163
+ \ </xsd:simpleType>\n <xsd:complexType name=\"TrackingPieces\">\n
164
+ \ <xsd:sequence>\n <xsd:element name=\"PieceInfo\"
165
+ type=\"s0:ArrayOfPieceInfo\"/>\n </xsd:sequence>\n </xsd:complexType>\n
166
+ \ <xsd:complexType name=\"PieceInfo\">\n <xsd:sequence>\n
167
+ \ <xsd:element name=\"PieceDetails\" type=\"s0:PieceDetails\"/>\n
168
+ \ <xsd:element name=\"PieceEvent\" type=\"s0:ArrayOfPieceEvent\"/>\n
169
+ \ </xsd:sequence>\n </xsd:complexType>\n <xsd:complexType
170
+ name=\"PieceDetails\">\n <xsd:sequence>\n <xsd:element
171
+ name=\"AWBNumber\" type=\"xsd:string\"/>\n <xsd:element name=\"LicensePlate\"
172
+ type=\"s0:TrackingPieceID\"/>\n <xsd:element minOccurs=\"0\"
173
+ name=\"PieceNumber\" type=\"xsd:string\"/>\n <xsd:element minOccurs=\"0\"
174
+ name=\"ActualDepth\" type=\"xsd:string\"/>\n <xsd:element minOccurs=\"0\"
175
+ name=\"ActualWidth\" type=\"xsd:string\"/>\n <xsd:element minOccurs=\"0\"
176
+ name=\"ActualHeight\" type=\"xsd:string\"/>\n <xsd:element minOccurs=\"0\"
177
+ name=\"ActualWeight\" type=\"xsd:string\"/>\n <xsd:element minOccurs=\"0\"
178
+ name=\"Depth\" type=\"xsd:string\"/>\n <xsd:element minOccurs=\"0\"
179
+ name=\"Width\" type=\"xsd:string\"/>\n <xsd:element minOccurs=\"0\"
180
+ name=\"Height\" type=\"xsd:string\"/>\n <xsd:element minOccurs=\"0\"
181
+ name=\"Weight\" type=\"xsd:string\"/>\n <xsd:element minOccurs=\"0\"
182
+ name=\"PackageType\" type=\"s0:PackageType\"/>\n <xsd:element
183
+ minOccurs=\"0\" name=\"DimWeight\" type=\"xsd:string\"/>\n <xsd:element
184
+ minOccurs=\"0\" name=\"WeightUnit\" type=\"xsd:string\"/>\n <xsd:element
185
+ minOccurs=\"0\" name=\"PieceContents\" type=\"xsd:string\"/>\n </xsd:sequence>\n
186
+ \ </xsd:complexType>\n <xsd:simpleType name=\"PackageType\">\n
187
+ \ <xsd:restriction base=\"xsd:string\">\n <xsd:whiteSpace
188
+ value=\"preserve\"/>\n <xsd:maxLength value=\"2\"/>\n </xsd:restriction>\n
189
+ \ </xsd:simpleType>\n <xsd:complexType name=\"PieceEvent\">\n
190
+ \ <xsd:sequence>\n <xsd:element name=\"Date\" type=\"xsd:date\"/>\n
191
+ \ <xsd:element name=\"Time\" type=\"xsd:time\"/>\n <xsd:element
192
+ name=\"ServiceEvent\" type=\"s0:ServiceEvent\"/>\n <xsd:element
193
+ minOccurs=\"0\" name=\"Signatory\" type=\"tns:Signatory2\"/>\n <xsd:element
194
+ name=\"ServiceArea\" type=\"s0:ServiceArea\"/>\n <xsd:element
195
+ name=\"ShipperReference\" nillable=\"true\" type=\"tns:ShipperReference\"/>\n
196
+ \ </xsd:sequence>\n </xsd:complexType>\n <xsd:complexType
197
+ name=\"ArrayOfPieceEvent\">\n<xsd:sequence>\n\t\t\t<xsd:element maxOccurs=\"unbounded\"
198
+ name=\"ArrayOfPieceEventItem\" type=\"s0:PieceEvent\"/>\n\t\t</xsd:sequence>\n\n
199
+ \ </xsd:complexType>\n <xsd:complexType name=\"ArrayOfPieceInfo\">\n<xsd:sequence>\n\t\t\t<xsd:element
200
+ maxOccurs=\"unbounded\" name=\"ArrayOfPieceInfoItem\" type=\"s0:PieceInfo\"/>\n\t\t</xsd:sequence>\n\n
201
+ \ </xsd:complexType>\n <xsd:complexType name=\"ArrayOfAWBInfo\">\n<xsd:sequence>\n\t\t\t<xsd:element
202
+ maxOccurs=\"unbounded\" name=\"ArrayOfAWBInfoItem\" type=\"s0:AWBInfo\"/>\n\t\t</xsd:sequence>\n\n
203
+ \ </xsd:complexType>\n <xsd:complexType name=\"Fault\">\n
204
+ \ <xsd:sequence>\n <xsd:element name=\"PieceFault\"
205
+ type=\"s0:ArrayOfPieceFault\"/>\n </xsd:sequence>\n </xsd:complexType>\n
206
+ \ <xsd:complexType name=\"PieceFault\">\n <xsd:sequence>\n
207
+ \ <xsd:element name=\"PieceID\" type=\"s0:TrackingPieceID\"/>\n
208
+ \ <xsd:element name=\"ConditionCode\" type=\"xsd:string\"/>\n
209
+ \ <xsd:element name=\"ConditionData\" type=\"xsd:string\"/>\n
210
+ \ </xsd:sequence>\n </xsd:complexType>\n <xsd:complexType
211
+ name=\"ArrayOfPieceFault\">\n<xsd:sequence>\n\t\t\t<xsd:element maxOccurs=\"unbounded\"
212
+ name=\"ArrayOfPieceFaultItem\" type=\"s0:PieceFault\"/>\n\t\t</xsd:sequence>\n\n
213
+ \ </xsd:complexType>\n \t</xsd:schema><xsd:schema targetNamespace=\"http://scxgxtt.phx-dc.dhl.com/glDHLExpressTrack/providers/services/trackShipment\">\n
214
+ \ <xsd:import namespace=\"http://www.dhl.com\"/>\n <xsd:complexType
215
+ name=\"trackShipmentRequest\">\n <xsd:sequence>\n <xsd:element
216
+ name=\"trackingRequest\" nillable=\"true\" type=\"tns:pubTrackingRequest\"/>\n
217
+ \ </xsd:sequence>\n </xsd:complexType>\n <xsd:complexType
218
+ name=\"pubTrackingRequest\">\n <xsd:sequence>\n <xsd:element
219
+ ref=\"s0:TrackingRequest\"/>\n </xsd:sequence>\n </xsd:complexType>\n
220
+ \ <xsd:simpleType name=\"PiecesEnabled\">\n <xsd:restriction
221
+ base=\"xsd:string\">\n <xsd:whiteSpace value=\"preserve\"/>\n
222
+ \ <xsd:enumeration value=\"S\"/>\n <xsd:enumeration
223
+ value=\"B\"/>\n <xsd:enumeration value=\"P\"/>\n </xsd:restriction>\n
224
+ \ </xsd:simpleType>\n <xsd:complexType name=\"trackShipmentRequestResponse\">\n
225
+ \ <xsd:sequence>\n <xsd:element name=\"trackingResponse\"
226
+ nillable=\"true\" type=\"tns:pubTrackingResponse\"/>\n </xsd:sequence>\n
227
+ \ </xsd:complexType>\n <xsd:complexType name=\"pubTrackingResponse\">\n
228
+ \ <xsd:sequence>\n <xsd:element ref=\"s0:TrackingResponse\"/>\n
229
+ \ </xsd:sequence>\n </xsd:complexType>\n <xsd:simpleType
230
+ name=\"WeightUnit\">\n <xsd:restriction base=\"xsd:string\">\n
231
+ \ <xsd:whiteSpace value=\"preserve\"/>\n <xsd:enumeration
232
+ value=\"L\"/>\n <xsd:enumeration value=\"K\"/>\n <xsd:enumeration
233
+ value=\"G\"/>\n </xsd:restriction>\n </xsd:simpleType>\n
234
+ \ <xsd:simpleType name=\"EventCode\">\n <xsd:restriction
235
+ base=\"xsd:string\">\n <xsd:whiteSpace value=\"preserve\"/>\n
236
+ \ <xsd:length value=\"2\"/>\n </xsd:restriction>\n
237
+ \ </xsd:simpleType>\n <xsd:simpleType name=\"Signatory\">\n
238
+ \ <xsd:restriction base=\"xsd:string\">\n <xsd:whiteSpace
239
+ value=\"preserve\"/>\n </xsd:restriction>\n </xsd:simpleType>\n
240
+ \ <xsd:simpleType name=\"Signatory2\">\n <xsd:restriction
241
+ base=\"xsd:string\">\n <xsd:whiteSpace value=\"preserve\"/>\n
242
+ \ </xsd:restriction>\n </xsd:simpleType>\n <xsd:complexType
243
+ name=\"ShipperReference\">\n <xsd:sequence>\n <xsd:element
244
+ name=\"ReferenceID\" nillable=\"true\" type=\"xsd:string\"/>\n <xsd:element
245
+ minOccurs=\"0\" name=\"ReferenceType\" nillable=\"true\" type=\"xsd:string\"/>\n
246
+ \ </xsd:sequence>\n </xsd:complexType>\n \t\t\t<xsd:element
247
+ name=\"trackShipmentRequest\" type=\"tns:trackShipmentRequest\"/>\n\t\t\t<xsd:element
248
+ name=\"trackShipmentRequestResponse\" type=\"tns:trackShipmentRequestResponse\"/>\n\t</xsd:schema></wsdl:types><wsdl:message
249
+ name=\"trackShipmentRequestIn\"><wsdl:part name=\"parameters\" element=\"tns:trackShipmentRequest\"/></wsdl:message><wsdl:message
250
+ name=\"trackShipmentRequestOut\"><wsdl:part name=\"parameters\" element=\"tns:trackShipmentRequestResponse\"/></wsdl:message><wsdl:portType
251
+ name=\"gblDHLExpressTrack\"><wsdl:operation name=\"trackShipmentRequest\"><wsdl:input
252
+ message=\"tns:trackShipmentRequestIn\"/><wsdl:output message=\"tns:trackShipmentRequestOut\"/></wsdl:operation></wsdl:portType><wsdl:binding
253
+ name=\"gblDHLExpressTrack\" type=\"tns:gblDHLExpressTrack\"><soap:binding
254
+ style=\"document\" transport=\"http://schemas.xmlsoap.org/soap/http\"/><wsdl:operation
255
+ name=\"trackShipmentRequest\"><soap:operation soapAction=\"glDHLExpressTrack_providers_services_trackShipment_Binder_trackShipmentRequest\"
256
+ style=\"document\"/><wsdl:input><soap:body use=\"literal\" parts=\"parameters\"/></wsdl:input><wsdl:output><soap:body
257
+ use=\"literal\" parts=\"parameters\"/></wsdl:output></wsdl:operation></wsdl:binding><wsdl:service
258
+ name=\"gblDHLExpressTrack\"><wsdl:port name=\"gblDHLExpressTrack\" binding=\"tns:gblDHLExpressTrack\"><soap:address
259
+ location=\"https://wsbuat.dhl.com:8300/gbl/glDHLExpressTrack\"/></wsdl:port></wsdl:service></wsdl:definitions>"
260
+ http_version:
261
+ recorded_at: Sat, 01 Jun 2013 07:10:36 GMT
262
+ - request:
263
+ method: post
264
+ uri: https://wsbuat.dhl.com:8300/gbl/glDHLExpressTrack
265
+ body:
266
+ encoding: UTF-8
267
+ string: <?xml version="1.0" encoding="UTF-8"?><env:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema"
268
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="http://scxgxtt.phx-dc.dhl.com/glDHLExpressTrack/providers/services/trackShipment"
269
+ xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ins0="http://www.dhl.com"
270
+ xmlns:dhl="http://www.dhl.com"><env:Header><wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"><wsse:UsernameToken
271
+ wsu:Id="UsernameToken-1" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"><wsse:Username>username</wsse:Username><wsse:Password
272
+ Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">password</wsse:Password></wsse:UsernameToken><wsu:Timestamp
273
+ wsu:Id="Timestamp-2" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"><wsu:Created>2013-06-01T07:10:36Z</wsu:Created><wsu:Expires>2013-06-01T07:11:36Z</wsu:Expires></wsu:Timestamp></wsse:Security></env:Header><env:Body><tns:trackShipmentRequest><trackingRequest><dhl:TrackingRequest><Request><ServiceHeader><MessageTime>2013-06-01T07:10:33+00:00</MessageTime><MessageReference>1234567890123456789012345678</MessageReference></ServiceHeader></Request><AWBNumber><ArrayOfAWBNumberItem>5223281416</ArrayOfAWBNumberItem></AWBNumber><LevelOfDetails>ALL_CHECK_POINTS</LevelOfDetails><PiecesEnabled>B</PiecesEnabled></dhl:TrackingRequest></trackingRequest></tns:trackShipmentRequest></env:Body></env:Envelope>
274
+ headers:
275
+ Soapaction:
276
+ - '"glDHLExpressTrack_providers_services_trackShipment_Binder_trackShipmentRequest"'
277
+ Content-Type:
278
+ - text/xml;charset=UTF-8
279
+ Content-Length:
280
+ - '1592'
281
+ Accept-Encoding:
282
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
283
+ Accept:
284
+ - '*/*'
285
+ User-Agent:
286
+ - Ruby
287
+ response:
288
+ status:
289
+ code: 200
290
+ message: OK
291
+ headers:
292
+ Date:
293
+ - Sat, 01 Jun 2013 07:10:38 GMT
294
+ Server:
295
+ - ACE XML Gateway
296
+ Content-Type:
297
+ - text/xml
298
+ Content-Length:
299
+ - '20548'
300
+ body:
301
+ encoding: UTF-8
302
+ string: |
303
+ <?xml version="1.0" encoding="utf-8"?>
304
+ <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
305
+ <SOAP-ENV:Header xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"></SOAP-ENV:Header><SOAP-ENV:Body>
306
+ <ser-root:trackShipmentRequestResponse xmlns:ser-root="http://scxgxtt.phx-dc.dhl.com/glDHLExpressTrack/providers/services/trackShipment"><trackingResponse xmlns:ns="http://www.dhl.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
307
+ <ns:TrackingResponse>
308
+ <Response>
309
+ <ServiceHeader>
310
+ <MessageTime>2013-06-01T07:10:39Z</MessageTime>
311
+ <MessageReference>5cc5a310ca8a11e2ba65db8895cd5f09</MessageReference>
312
+ </ServiceHeader>
313
+ </Response>
314
+ <AWBInfo>
315
+ <ArrayOfAWBInfoItem>
316
+ <AWBNumber>5223281416</AWBNumber>
317
+ <Status>
318
+ <ActionStatus>Success</ActionStatus>
319
+ </Status>
320
+ <ShipmentInfo>
321
+ <OriginServiceArea>
322
+ <ServiceAreaCode>AOI</ServiceAreaCode>
323
+ <Description>Ancona - Italy</Description>
324
+ </OriginServiceArea>
325
+ <DestinationServiceArea>
326
+ <ServiceAreaCode>CAI</ServiceAreaCode>
327
+ <Description>Cairo - Egypt</Description>
328
+ <FacilityCode></FacilityCode>
329
+ </DestinationServiceArea>
330
+ <ShipperName>SAIMA AVANDERO SPA FEDERICA </ShipperName>
331
+ <ConsigneeName>DSV AIR &amp; SEA </ConsigneeName>
332
+ <ShipmentDate>2013-05-06T00:00:00+02:00</ShipmentDate>
333
+ <Pieces>1</Pieces>
334
+ <Weight>0.500</Weight>
335
+ <ShipmentEvent>
336
+ <ArrayOfShipmentEventItem>
337
+ <Date>2013-05-06</Date>
338
+ <Time>17:08:00</Time>
339
+ <ServiceEvent>
340
+ <EventCode>PO</EventCode>
341
+ <Description>Processed at Origin</Description>
342
+ </ServiceEvent>
343
+ <Signatory></Signatory>
344
+ <ServiceArea>
345
+ <ServiceAreaCode>AOI</ServiceAreaCode>
346
+ <Description>Ancona - Italy</Description>
347
+ </ServiceArea>
348
+ </ArrayOfShipmentEventItem>
349
+ </ShipmentEvent>
350
+ </ShipmentInfo>
351
+ <Pieces>
352
+ <PieceInfo>
353
+ <ArrayOfPieceInfoItem>
354
+ <PieceDetails>
355
+ <AWBNumber>5223281416</AWBNumber>
356
+ <LicensePlate>JD012959581720045844</LicensePlate>
357
+ <ActualDepth>0.000</ActualDepth>
358
+ <ActualWidth>0.000</ActualWidth>
359
+ <ActualHeight>0.000</ActualHeight>
360
+ <Depth>0.000</Depth>
361
+ <Width>0.000</Width>
362
+ <Height>0.000</Height>
363
+ <Weight>0.500</Weight>
364
+ <PackageType></PackageType>
365
+ <DimWeight>0.060</DimWeight>
366
+ <WeightUnit>KG</WeightUnit>
367
+ </PieceDetails>
368
+ <PieceEvent>
369
+ <ArrayOfPieceEventItem>
370
+ <Date>2013-05-08</Date>
371
+ <Time>11:10:00</Time>
372
+ <ServiceEvent>
373
+ <EventCode>OK</EventCode>
374
+ <Description>Delivery </Description>
375
+ </ServiceEvent>
376
+ <Signatory>MOUSTFA SAYED</Signatory>
377
+ <ServiceArea>
378
+ <ServiceAreaCode>CAI</ServiceAreaCode>
379
+ <Description>Cairo - Egypt</Description>
380
+ </ServiceArea>
381
+ <ShipperReference xsi:nil="true"></ShipperReference>
382
+ </ArrayOfPieceEventItem>
383
+ <ArrayOfPieceEventItem>
384
+ <Date>2013-05-08</Date>
385
+ <Time>07:43:00</Time>
386
+ <ServiceEvent>
387
+ <EventCode>WC</EventCode>
388
+ <Description>With Delivering Courier </Description>
389
+ </ServiceEvent>
390
+ <ServiceArea>
391
+ <ServiceAreaCode>CAI</ServiceAreaCode>
392
+ <Description>Cairo - Egypt</Description>
393
+ </ServiceArea>
394
+ <ShipperReference xsi:nil="true"></ShipperReference>
395
+ </ArrayOfPieceEventItem>
396
+ <ArrayOfPieceEventItem>
397
+ <Date>2013-05-08</Date>
398
+ <Time>06:57:00</Time>
399
+ <ServiceEvent>
400
+ <EventCode>AR</EventCode>
401
+ <Description>Arrival in Delivery Facility</Description>
402
+ </ServiceEvent>
403
+ <ServiceArea>
404
+ <ServiceAreaCode>CAI</ServiceAreaCode>
405
+ <Description>Cairo - Egypt</Description>
406
+ </ServiceArea>
407
+ <ShipperReference xsi:nil="true"></ShipperReference>
408
+ </ArrayOfPieceEventItem>
409
+ <ArrayOfPieceEventItem>
410
+ <Date>2013-05-08</Date>
411
+ <Time>04:53:33</Time>
412
+ <ServiceEvent>
413
+ <EventCode>DF</EventCode>
414
+ <Description>Depart Facility </Description>
415
+ </ServiceEvent>
416
+ <ServiceArea>
417
+ <ServiceAreaCode>CAI</ServiceAreaCode>
418
+ <Description>Cairo - Egypt</Description>
419
+ </ServiceArea>
420
+ <ShipperReference xsi:nil="true"></ShipperReference>
421
+ </ArrayOfPieceEventItem>
422
+ <ArrayOfPieceEventItem>
423
+ <Date>2013-05-08</Date>
424
+ <Time>04:52:42</Time>
425
+ <ServiceEvent>
426
+ <EventCode>PL</EventCode>
427
+ <Description>Processed at Location </Description>
428
+ </ServiceEvent>
429
+ <ServiceArea>
430
+ <ServiceAreaCode>CAI</ServiceAreaCode>
431
+ <Description>Cairo - Egypt</Description>
432
+ </ServiceArea>
433
+ <ShipperReference xsi:nil="true"></ShipperReference>
434
+ </ArrayOfPieceEventItem>
435
+ <ArrayOfPieceEventItem>
436
+ <Date>2013-05-08</Date>
437
+ <Time>03:31:58</Time>
438
+ <ServiceEvent>
439
+ <EventCode>PL</EventCode>
440
+ <Description>Processed at Location </Description>
441
+ </ServiceEvent>
442
+ <ServiceArea>
443
+ <ServiceAreaCode>CAI</ServiceAreaCode>
444
+ <Description>Cairo - Egypt</Description>
445
+ </ServiceArea>
446
+ <ShipperReference xsi:nil="true"></ShipperReference>
447
+ </ArrayOfPieceEventItem>
448
+ <ArrayOfPieceEventItem>
449
+ <Date>2013-05-08</Date>
450
+ <Time>03:11:12</Time>
451
+ <ServiceEvent>
452
+ <EventCode>AF</EventCode>
453
+ <Description>Arrived Facility </Description>
454
+ </ServiceEvent>
455
+ <ServiceArea>
456
+ <ServiceAreaCode>CAI</ServiceAreaCode>
457
+ <Description>Cairo - Egypt</Description>
458
+ </ServiceArea>
459
+ <ShipperReference xsi:nil="true"></ShipperReference>
460
+ </ArrayOfPieceEventItem>
461
+ <ArrayOfPieceEventItem>
462
+ <Date>2013-05-08</Date>
463
+ <Time>01:48:06</Time>
464
+ <ServiceEvent>
465
+ <EventCode>DF</EventCode>
466
+ <Description>Depart Facility </Description>
467
+ </ServiceEvent>
468
+ <ServiceArea>
469
+ <ServiceAreaCode>CAI</ServiceAreaCode>
470
+ <Description>Cairo - Egypt</Description>
471
+ </ServiceArea>
472
+ <ShipperReference xsi:nil="true"></ShipperReference>
473
+ </ArrayOfPieceEventItem>
474
+ <ArrayOfPieceEventItem>
475
+ <Date>2013-05-08</Date>
476
+ <Time>01:22:00</Time>
477
+ <ServiceEvent>
478
+ <EventCode>PL</EventCode>
479
+ <Description>Processed at Location </Description>
480
+ </ServiceEvent>
481
+ <ServiceArea>
482
+ <ServiceAreaCode>CAI</ServiceAreaCode>
483
+ <Description>Cairo - Egypt</Description>
484
+ </ServiceArea>
485
+ <ShipperReference xsi:nil="true"></ShipperReference>
486
+ </ArrayOfPieceEventItem>
487
+ <ArrayOfPieceEventItem>
488
+ <Date>2013-05-08</Date>
489
+ <Time>00:53:58</Time>
490
+ <ServiceEvent>
491
+ <EventCode>PL</EventCode>
492
+ <Description>Processed at Location </Description>
493
+ </ServiceEvent>
494
+ <ServiceArea>
495
+ <ServiceAreaCode>CAI</ServiceAreaCode>
496
+ <Description>Cairo - Egypt</Description>
497
+ </ServiceArea>
498
+ <ShipperReference xsi:nil="true"></ShipperReference>
499
+ </ArrayOfPieceEventItem>
500
+ <ArrayOfPieceEventItem>
501
+ <Date>2013-05-07</Date>
502
+ <Time>21:56:18</Time>
503
+ <ServiceEvent>
504
+ <EventCode>AF</EventCode>
505
+ <Description>Arrived Facility </Description>
506
+ </ServiceEvent>
507
+ <ServiceArea>
508
+ <ServiceAreaCode>CAI</ServiceAreaCode>
509
+ <Description>Cairo - Egypt</Description>
510
+ </ServiceArea>
511
+ <ShipperReference xsi:nil="true"></ShipperReference>
512
+ </ArrayOfPieceEventItem>
513
+ <ArrayOfPieceEventItem>
514
+ <Date>2013-05-07</Date>
515
+ <Time>11:07:01</Time>
516
+ <ServiceEvent>
517
+ <EventCode>DF</EventCode>
518
+ <Description>Depart Facility </Description>
519
+ </ServiceEvent>
520
+ <ServiceArea>
521
+ <ServiceAreaCode>LHR</ServiceAreaCode>
522
+ <Description>London-Heathrow - United Kingdom</Description>
523
+ </ServiceArea>
524
+ <ShipperReference xsi:nil="true"></ShipperReference>
525
+ </ArrayOfPieceEventItem>
526
+ <ArrayOfPieceEventItem>
527
+ <Date>2013-05-07</Date>
528
+ <Time>09:29:04</Time>
529
+ <ServiceEvent>
530
+ <EventCode>SI</EventCode>
531
+ <Description>Security Inspection </Description>
532
+ </ServiceEvent>
533
+ <ServiceArea>
534
+ <ServiceAreaCode>LHR</ServiceAreaCode>
535
+ <Description>London-Heathrow - United Kingdom</Description>
536
+ </ServiceArea>
537
+ <ShipperReference xsi:nil="true"></ShipperReference>
538
+ </ArrayOfPieceEventItem>
539
+ <ArrayOfPieceEventItem>
540
+ <Date>2013-05-07</Date>
541
+ <Time>09:29:04</Time>
542
+ <ServiceEvent>
543
+ <EventCode>PL</EventCode>
544
+ <Description>Processed at Location </Description>
545
+ </ServiceEvent>
546
+ <ServiceArea>
547
+ <ServiceAreaCode>LHR</ServiceAreaCode>
548
+ <Description>London-Heathrow - United Kingdom</Description>
549
+ </ServiceArea>
550
+ <ShipperReference xsi:nil="true"></ShipperReference>
551
+ </ArrayOfPieceEventItem>
552
+ <ArrayOfPieceEventItem>
553
+ <Date>2013-05-07</Date>
554
+ <Time>07:08:32</Time>
555
+ <ServiceEvent>
556
+ <EventCode>AF</EventCode>
557
+ <Description>Arrived Facility </Description>
558
+ </ServiceEvent>
559
+ <ServiceArea>
560
+ <ServiceAreaCode>LHR</ServiceAreaCode>
561
+ <Description>London-Heathrow - United Kingdom</Description>
562
+ </ServiceArea>
563
+ <ShipperReference xsi:nil="true"></ShipperReference>
564
+ </ArrayOfPieceEventItem>
565
+ <ArrayOfPieceEventItem>
566
+ <Date>2013-05-07</Date>
567
+ <Time>05:13:05</Time>
568
+ <ServiceEvent>
569
+ <EventCode>DF</EventCode>
570
+ <Description>Depart Facility </Description>
571
+ </ServiceEvent>
572
+ <ServiceArea>
573
+ <ServiceAreaCode>LHR</ServiceAreaCode>
574
+ <Description>London-Heathrow - United Kingdom</Description>
575
+ </ServiceArea>
576
+ <ShipperReference xsi:nil="true"></ShipperReference>
577
+ </ArrayOfPieceEventItem>
578
+ <ArrayOfPieceEventItem>
579
+ <Date>2013-05-07</Date>
580
+ <Time>04:07:36</Time>
581
+ <ServiceEvent>
582
+ <EventCode>TR</EventCode>
583
+ <Description>Record of Transit </Description>
584
+ </ServiceEvent>
585
+ <ServiceArea>
586
+ <ServiceAreaCode>LHR</ServiceAreaCode>
587
+ <Description>London-Heathrow - United Kingdom</Description>
588
+ </ServiceArea>
589
+ <ShipperReference xsi:nil="true"></ShipperReference>
590
+ </ArrayOfPieceEventItem>
591
+ <ArrayOfPieceEventItem>
592
+ <Date>2013-05-07</Date>
593
+ <Time>04:04:41</Time>
594
+ <ServiceEvent>
595
+ <EventCode>DF</EventCode>
596
+ <Description>Depart Facility </Description>
597
+ </ServiceEvent>
598
+ <ServiceArea>
599
+ <ServiceAreaCode>LEJ</ServiceAreaCode>
600
+ <Description>Leipzig - Germany</Description>
601
+ </ServiceArea>
602
+ <ShipperReference xsi:nil="true"></ShipperReference>
603
+ </ArrayOfPieceEventItem>
604
+ <ArrayOfPieceEventItem>
605
+ <Date>2013-05-07</Date>
606
+ <Time>00:52:03</Time>
607
+ <ServiceEvent>
608
+ <EventCode>PL</EventCode>
609
+ <Description>Processed at Location </Description>
610
+ </ServiceEvent>
611
+ <ServiceArea>
612
+ <ServiceAreaCode>LEJ</ServiceAreaCode>
613
+ <Description>Leipzig - Germany</Description>
614
+ </ServiceArea>
615
+ <ShipperReference xsi:nil="true"></ShipperReference>
616
+ </ArrayOfPieceEventItem>
617
+ <ArrayOfPieceEventItem>
618
+ <Date>2013-05-07</Date>
619
+ <Time>00:11:34</Time>
620
+ <ServiceEvent>
621
+ <EventCode>AF</EventCode>
622
+ <Description>Arrived Facility </Description>
623
+ </ServiceEvent>
624
+ <ServiceArea>
625
+ <ServiceAreaCode>LEJ</ServiceAreaCode>
626
+ <Description>Leipzig - Germany</Description>
627
+ </ServiceArea>
628
+ <ShipperReference xsi:nil="true"></ShipperReference>
629
+ </ArrayOfPieceEventItem>
630
+ <ArrayOfPieceEventItem>
631
+ <Date>2013-05-06</Date>
632
+ <Time>23:17:10</Time>
633
+ <ServiceEvent>
634
+ <EventCode>DF</EventCode>
635
+ <Description>Depart Facility </Description>
636
+ </ServiceEvent>
637
+ <ServiceArea>
638
+ <ServiceAreaCode>BLQ</ServiceAreaCode>
639
+ <Description>Bologna - Italy</Description>
640
+ </ServiceArea>
641
+ <ShipperReference xsi:nil="true"></ShipperReference>
642
+ </ArrayOfPieceEventItem>
643
+ <ArrayOfPieceEventItem>
644
+ <Date>2013-05-06</Date>
645
+ <Time>23:15:11</Time>
646
+ <ServiceEvent>
647
+ <EventCode>TR</EventCode>
648
+ <Description>Record of Transit </Description>
649
+ </ServiceEvent>
650
+ <ServiceArea>
651
+ <ServiceAreaCode>BLQ</ServiceAreaCode>
652
+ <Description>Bologna - Italy</Description>
653
+ </ServiceArea>
654
+ <ShipperReference xsi:nil="true"></ShipperReference>
655
+ </ArrayOfPieceEventItem>
656
+ <ArrayOfPieceEventItem>
657
+ <Date>2013-05-06</Date>
658
+ <Time>20:42:42</Time>
659
+ <ServiceEvent>
660
+ <EventCode>DF</EventCode>
661
+ <Description>Depart Facility </Description>
662
+ </ServiceEvent>
663
+ <ServiceArea>
664
+ <ServiceAreaCode>AOI</ServiceAreaCode>
665
+ <Description>Ancona - Italy</Description>
666
+ </ServiceArea>
667
+ <ShipperReference xsi:nil="true"></ShipperReference>
668
+ </ArrayOfPieceEventItem>
669
+ <ArrayOfPieceEventItem>
670
+ <Date>2013-05-06</Date>
671
+ <Time>20:06:55</Time>
672
+ <ServiceEvent>
673
+ <EventCode>AF</EventCode>
674
+ <Description>Arrived Facility </Description>
675
+ </ServiceEvent>
676
+ <ServiceArea>
677
+ <ServiceAreaCode>AOI</ServiceAreaCode>
678
+ <Description>Ancona - Italy</Description>
679
+ </ServiceArea>
680
+ <ShipperReference xsi:nil="true"></ShipperReference>
681
+ </ArrayOfPieceEventItem>
682
+ <ArrayOfPieceEventItem>
683
+ <Date>2013-05-06</Date>
684
+ <Time>20:00:49</Time>
685
+ <ServiceEvent>
686
+ <EventCode>PL</EventCode>
687
+ <Description>Processed at Location </Description>
688
+ </ServiceEvent>
689
+ <ServiceArea>
690
+ <ServiceAreaCode>AOI</ServiceAreaCode>
691
+ <Description>Ancona - Italy</Description>
692
+ </ServiceArea>
693
+ <ShipperReference xsi:nil="true"></ShipperReference>
694
+ </ArrayOfPieceEventItem>
695
+ <ArrayOfPieceEventItem>
696
+ <Date>2013-05-06</Date>
697
+ <Time>20:00:04</Time>
698
+ <ServiceEvent>
699
+ <EventCode>SI</EventCode>
700
+ <Description>Security Inspection </Description>
701
+ </ServiceEvent>
702
+ <ServiceArea>
703
+ <ServiceAreaCode>AOI</ServiceAreaCode>
704
+ <Description>Ancona - Italy</Description>
705
+ </ServiceArea>
706
+ <ShipperReference xsi:nil="true"></ShipperReference>
707
+ </ArrayOfPieceEventItem>
708
+ <ArrayOfPieceEventItem>
709
+ <Date>2013-05-06</Date>
710
+ <Time>19:26:46</Time>
711
+ <ServiceEvent>
712
+ <EventCode>DF</EventCode>
713
+ <Description>Depart Facility </Description>
714
+ </ServiceEvent>
715
+ <ServiceArea>
716
+ <ServiceAreaCode>AOI</ServiceAreaCode>
717
+ <Description>Ancona - Italy</Description>
718
+ </ServiceArea>
719
+ <ShipperReference xsi:nil="true"></ShipperReference>
720
+ </ArrayOfPieceEventItem>
721
+ <ArrayOfPieceEventItem>
722
+ <Date>2013-05-06</Date>
723
+ <Time>17:07:00</Time>
724
+ <ServiceEvent>
725
+ <EventCode>PL</EventCode>
726
+ <Description>Processed at Location </Description>
727
+ </ServiceEvent>
728
+ <ServiceArea>
729
+ <ServiceAreaCode>AOI</ServiceAreaCode>
730
+ <Description>Ancona - Italy</Description>
731
+ </ServiceArea>
732
+ <ShipperReference xsi:nil="true"></ShipperReference>
733
+ </ArrayOfPieceEventItem>
734
+ <ArrayOfPieceEventItem>
735
+ <Date>2013-05-06</Date>
736
+ <Time>17:07:00</Time>
737
+ <ServiceEvent>
738
+ <EventCode>RW</EventCode>
739
+ <Description>Weigh and Dimension </Description>
740
+ </ServiceEvent>
741
+ <ServiceArea>
742
+ <ServiceAreaCode>AOI</ServiceAreaCode>
743
+ <Description>Ancona - Italy</Description>
744
+ </ServiceArea>
745
+ <ShipperReference xsi:nil="true"></ShipperReference>
746
+ </ArrayOfPieceEventItem>
747
+ <ArrayOfPieceEventItem>
748
+ <Date>2013-05-06</Date>
749
+ <Time>14:55:00</Time>
750
+ <ServiceEvent>
751
+ <EventCode>PU</EventCode>
752
+ <Description>Shipment Pickup </Description>
753
+ </ServiceEvent>
754
+ <ServiceArea>
755
+ <ServiceAreaCode>AOI</ServiceAreaCode>
756
+ <Description>Ancona - Italy</Description>
757
+ </ServiceArea>
758
+ <ShipperReference xsi:nil="true"></ShipperReference>
759
+ </ArrayOfPieceEventItem>
760
+ </PieceEvent>
761
+ </ArrayOfPieceInfoItem>
762
+ </PieceInfo>
763
+ </Pieces>
764
+ </ArrayOfAWBInfoItem>
765
+ </AWBInfo>
766
+ </ns:TrackingResponse></trackingResponse></ser-root:trackShipmentRequestResponse></SOAP-ENV:Body>
767
+ </SOAP-ENV:Envelope>
768
+ http_version:
769
+ recorded_at: Sat, 01 Jun 2013 07:10:40 GMT
770
+ recorded_with: VCR 2.5.0