dhl-intraship 0.0.8 → 0.1.0
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.
data/README.md
CHANGED
data/lib/dhl-intraship/api.rb
CHANGED
@@ -43,11 +43,10 @@ module Dhl
|
|
43
43
|
|
44
44
|
def createShipmentDD(shipments)
|
45
45
|
begin
|
46
|
+
shipments = [shipments] unless shipments.respond_to?('each')
|
47
|
+
|
46
48
|
# For some reason the class instance variables are not accessible inside of the request block
|
47
|
-
|
48
|
-
signature = @signature
|
49
|
-
ekp = @ekp
|
50
|
-
procedure_id = @procedure_id
|
49
|
+
ekp = @ekp
|
51
50
|
partner_id = @partner_id
|
52
51
|
|
53
52
|
returnXML = @config && @config[:label_response_type] && @config[:label_response_type] == :xml;
|
@@ -55,12 +54,7 @@ module Dhl
|
|
55
54
|
soap.xml do |xml|
|
56
55
|
xml.soapenv(:Envelope, DEFAULT_NAMESPACES) do |xml|
|
57
56
|
xml.soapenv(:Header) do |xml|
|
58
|
-
xml
|
59
|
-
xml.cis(:user, user)
|
60
|
-
xml.cis(:signature, signature)
|
61
|
-
xml.cis(:accountNumber, "#{ekp}|#{procedure_id}|#{partner_id}")
|
62
|
-
xml.cis(:type, '0')
|
63
|
-
end
|
57
|
+
append_default_header_to_xml(xml)
|
64
58
|
end
|
65
59
|
xml.soapenv(:Body) do |xml|
|
66
60
|
xml.de(:"CreateShipmentDDRequest") do |xml|
|
@@ -93,12 +87,62 @@ module Dhl
|
|
93
87
|
end
|
94
88
|
|
95
89
|
else
|
96
|
-
raise "Intraship call failed with code #{r[:status][:status_code]}: #{r[:status][:status_message]}"
|
90
|
+
raise "Intraship call failed with code #{r[:status][:status_code]}: #{r[:status][:status_message]} (Status messages: #{r[:creation_state][:status].to_s})"
|
97
91
|
end
|
98
92
|
rescue Savon::Error => error
|
99
93
|
raise error
|
100
94
|
end
|
101
95
|
end
|
96
|
+
|
97
|
+
def deleteShipmentDD(shipment_number)
|
98
|
+
begin
|
99
|
+
result = @client.request "de:DeleteShipmentDDRequest" do
|
100
|
+
soap.xml do |xml|
|
101
|
+
xml.soapenv(:Envelope, DEFAULT_NAMESPACES) do |xml|
|
102
|
+
xml.soapenv(:Header) do |xml|
|
103
|
+
append_default_header_to_xml(xml)
|
104
|
+
end
|
105
|
+
xml.soapenv(:Body) do |xml|
|
106
|
+
xml.de(:"DeleteShipmentDDRequest") do |xml|
|
107
|
+
xml.cis(:Version) do |xml|
|
108
|
+
xml.cis(:majorRelease, '1')
|
109
|
+
xml.cis(:minorRelease, '0')
|
110
|
+
end
|
111
|
+
xml.ShipmentNumber do |xml|
|
112
|
+
xml.cis(:shipmentNumber, shipment_number)
|
113
|
+
end
|
114
|
+
end
|
115
|
+
end
|
116
|
+
end
|
117
|
+
end
|
118
|
+
end
|
119
|
+
r = result.to_hash[:delete_shipment_response]
|
120
|
+
|
121
|
+
# Return true if successful
|
122
|
+
raise "Intraship call failed with code #{r[:status][:status_code]}: #{r[:status][:status_message]} (Status messages: #{r[:deletion_state][:status].to_s})" unless r[:status][:status_code] == '0'
|
123
|
+
|
124
|
+
true
|
125
|
+
rescue Savon::Error => error
|
126
|
+
raise error
|
127
|
+
end
|
128
|
+
end
|
129
|
+
|
130
|
+
protected
|
131
|
+
def append_default_header_to_xml(xml)
|
132
|
+
# For some reason the class instance variables are not accessible inside of the request block
|
133
|
+
user = @user
|
134
|
+
signature = @signature
|
135
|
+
ekp = @ekp
|
136
|
+
procedure_id = @procedure_id
|
137
|
+
partner_id = @partner_id
|
138
|
+
|
139
|
+
xml.cis(:Authentification) do |xml|
|
140
|
+
xml.cis(:user, user)
|
141
|
+
xml.cis(:signature, signature)
|
142
|
+
xml.cis(:accountNumber, "#{ekp}|#{procedure_id}|#{partner_id}")
|
143
|
+
xml.cis(:type, '0')
|
144
|
+
end
|
145
|
+
end
|
102
146
|
end
|
103
147
|
end
|
104
|
-
end
|
148
|
+
end
|
@@ -3,7 +3,7 @@ require 'spec_helper'
|
|
3
3
|
module Dhl
|
4
4
|
module Intraship
|
5
5
|
|
6
|
-
|
6
|
+
CREATE_RESPONSE = <<EOS
|
7
7
|
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
|
8
8
|
<soapenv:Body>
|
9
9
|
<ns2:CreateShipmentResponse xmlns:ns2="http://de.ws.intraship">
|
@@ -43,7 +43,7 @@ EOS
|
|
43
43
|
end
|
44
44
|
|
45
45
|
it "should create an API call" do
|
46
|
-
savon.expects("de:CreateShipmentDDRequest" ).returns( code: 200, headers: {},body:
|
46
|
+
savon.expects("de:CreateShipmentDDRequest" ).returns( code: 200, headers: {},body: CREATE_RESPONSE )
|
47
47
|
|
48
48
|
shipment = Shipment.new(shipment_date: Date.today + 1)
|
49
49
|
|
@@ -52,7 +52,7 @@ EOS
|
|
52
52
|
shipment.receiver_address=receiver
|
53
53
|
shipment.sender_address=sender
|
54
54
|
|
55
|
-
@api.createShipmentDD(
|
55
|
+
@api.createShipmentDD(shipment).should_not be_nil
|
56
56
|
end
|
57
57
|
end
|
58
58
|
|
@@ -0,0 +1,79 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module Dhl
|
4
|
+
module Intraship
|
5
|
+
|
6
|
+
ERROR_DELETE_RESPONSE = <<EOS
|
7
|
+
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
|
8
|
+
<soapenv:Body>
|
9
|
+
<ns4:DeleteShipmentResponse xmlns:ns4="http://de.ws.intraship">
|
10
|
+
<Version xmlns="http://dhl.de/webservice/cisbase">
|
11
|
+
<majorRelease>1</majorRelease>
|
12
|
+
<minorRelease>0</minorRelease>
|
13
|
+
<build>14</build>
|
14
|
+
</Version>
|
15
|
+
<Status>
|
16
|
+
<StatusCode>1050</StatusCode>
|
17
|
+
<StatusMessage>at least on shipment could not be deleted</StatusMessage>
|
18
|
+
</Status>
|
19
|
+
<DeletionState>
|
20
|
+
<ShipmentNumber>
|
21
|
+
<ns1:shipmentNumber xmlns:ns1="http://dhl.de/webservice/cisbase">123</ns1:shipmentNumber>
|
22
|
+
</ShipmentNumber>
|
23
|
+
<Status>
|
24
|
+
<StatusCode>2000</StatusCode>
|
25
|
+
<StatusMessage>shipment not found or is deleted.</StatusMessage>
|
26
|
+
</Status>
|
27
|
+
</DeletionState>
|
28
|
+
</ns4:DeleteShipmentResponse>
|
29
|
+
</soapenv:Body>
|
30
|
+
</soapenv:Envelope>
|
31
|
+
EOS
|
32
|
+
|
33
|
+
DELETE_RESPONSE = <<EOS
|
34
|
+
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
|
35
|
+
<soapenv:Body>
|
36
|
+
<ns4:DeleteShipmentResponse xmlns:ns4="http://de.ws.intraship">
|
37
|
+
<Version xmlns="http://dhl.de/webservice/cisbase">
|
38
|
+
<majorRelease>1</majorRelease>
|
39
|
+
<minorRelease>0</minorRelease>
|
40
|
+
<build>11</build>
|
41
|
+
</Version>
|
42
|
+
<status>
|
43
|
+
<StatusCode>0</StatusCode>
|
44
|
+
<StatusMessage>ok</StatusMessage>
|
45
|
+
</status>
|
46
|
+
<DeletionState>
|
47
|
+
<StatusCode>0</StatusCode>
|
48
|
+
<StatusMessage>ok</StatusMessage>
|
49
|
+
<ShipmentNumber>
|
50
|
+
<ns1:shipmentNumber xmlns:ns1="http://dhl.de/webservice/cisbase">123</ns1:shipmentNumber>
|
51
|
+
</ShipmentNumber>
|
52
|
+
</DeletionState>
|
53
|
+
</ns4:DeleteShipmentResponse>
|
54
|
+
</soapenv:Body>
|
55
|
+
</soapenv:Envelope>
|
56
|
+
EOS
|
57
|
+
|
58
|
+
describe API do
|
59
|
+
before(:each) do
|
60
|
+
config = {user: 'user', signature: 'signature', ekp: 'ekp12345'}
|
61
|
+
options = {test: true}
|
62
|
+
@api = API.new(config, options)
|
63
|
+
end
|
64
|
+
|
65
|
+
it "should raise an exception on a failed call" do
|
66
|
+
savon.expects("de:DeleteShipmentDDRequest").returns( code: 200, headers: {},body: ERROR_DELETE_RESPONSE )
|
67
|
+
|
68
|
+
expect { @api.deleteShipmentDD("123") }.should raise_error
|
69
|
+
end
|
70
|
+
|
71
|
+
it "should return true on successful call" do
|
72
|
+
savon.expects("de:DeleteShipmentDDRequest").returns( code: 200, headers: {},body: DELETE_RESPONSE )
|
73
|
+
|
74
|
+
@api.deleteShipmentDD("123").should be_true
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
end
|
79
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dhl-intraship
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-05-14 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: savon
|
@@ -80,6 +80,7 @@ files:
|
|
80
80
|
- lib/dhl-intraship/version.rb
|
81
81
|
- spec/dhl-intraship/address_spec.rb
|
82
82
|
- spec/dhl-intraship/create_shipment_dd_spec.rb
|
83
|
+
- spec/dhl-intraship/delete_shipment_dd_spec.rb
|
83
84
|
- spec/spec_helper.rb
|
84
85
|
homepage: https://github.com/teameurope/dhl-intraship
|
85
86
|
licenses: []
|
@@ -101,11 +102,12 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
101
102
|
version: '0'
|
102
103
|
requirements: []
|
103
104
|
rubyforge_project:
|
104
|
-
rubygems_version: 1.8.
|
105
|
+
rubygems_version: 1.8.24
|
105
106
|
signing_key:
|
106
107
|
specification_version: 3
|
107
108
|
summary: This wraps the DHL Intraship SOAP Interface for creating shipments
|
108
109
|
test_files:
|
109
110
|
- spec/dhl-intraship/address_spec.rb
|
110
111
|
- spec/dhl-intraship/create_shipment_dd_spec.rb
|
112
|
+
- spec/dhl-intraship/delete_shipment_dd_spec.rb
|
111
113
|
- spec/spec_helper.rb
|