dhl 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
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