shipppit-canada-post 0.5.1 → 0.5.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 +4 -4
- data/README.md +1 -1
- data/lib/canada_post.rb +0 -1
- data/lib/canada_post/client.rb +8 -4
- data/lib/canada_post/credentials.rb +1 -1
- data/lib/canada_post/request/base.rb +0 -1
- data/lib/canada_post/request/shipping.rb +0 -1
- data/lib/canada_post/version.rb +1 -1
- data/spec/manifest_spec.rb +0 -1
- data/spec/registration_spec.rb +0 -1
- data/spec/shipping_spec.rb +11 -12
- metadata +2 -4
- data/lib/canada_post/request/shipment.rb +0 -96
- data/lib/canada_post/shipment.rb +0 -68
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: e71df1fc73d258b2507a86f1acaea2febf74667c
|
|
4
|
+
data.tar.gz: 5df51cc9a3174de2a3faaddbd873f5eb80ce3990
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: c56d09c4bc84a56f2e311d16c66d792254e5e5edd365dda58995eaeba6bdf82a1982f54478f8fae25e9662fe76c1813884002d8090a9eede5de1f90ac4137f71
|
|
7
|
+
data.tar.gz: 82b8070994af506e4ed57bba35543f9f23482ae1a5746fb18dcef3e23054969fc244c7e5dc5cb22e2a4557c0ff800d2a96eaea78a4e8661cca66325bc111c103
|
data/README.md
CHANGED
|
@@ -214,7 +214,7 @@ canada_post_service.create(
|
|
|
214
214
|
Use this call to get a unique registration token (token-id) required to launch a merchant into the Canada Post sign-up process.
|
|
215
215
|
|
|
216
216
|
```ruby
|
|
217
|
-
@token = canada_post_service.
|
|
217
|
+
@token = canada_post_service.registration_token
|
|
218
218
|
{'token-id' => '11111111111111111111111'}
|
|
219
219
|
```
|
|
220
220
|
|
data/lib/canada_post.rb
CHANGED
data/lib/canada_post/client.rb
CHANGED
|
@@ -33,19 +33,23 @@ module CanadaPost
|
|
|
33
33
|
Request::Registration.new(@credentials).get_token
|
|
34
34
|
end
|
|
35
35
|
|
|
36
|
+
def get_merchant_info(token)
|
|
37
|
+
Request::Registration.new(@credentials).merchant_info(token)
|
|
38
|
+
end
|
|
39
|
+
|
|
36
40
|
def get_artifact(url)
|
|
37
41
|
manifest = Request::Manifest.new(@credentials).get_manifest(url)
|
|
38
42
|
if manifest[:errors].present?
|
|
39
43
|
return {
|
|
40
|
-
|
|
41
|
-
|
|
44
|
+
status: false,
|
|
45
|
+
error: manifest[:errors]
|
|
42
46
|
}
|
|
43
47
|
else
|
|
44
48
|
artifact_link = get_artifact_link(manifest[:manifest])
|
|
45
49
|
artifact = Request::Manifest.new(@credentials).get_artifact(artifact_link)
|
|
46
50
|
return {
|
|
47
|
-
|
|
48
|
-
|
|
51
|
+
status: true,
|
|
52
|
+
artifact: artifact
|
|
49
53
|
}
|
|
50
54
|
end
|
|
51
55
|
end
|
data/lib/canada_post/version.rb
CHANGED
data/spec/manifest_spec.rb
CHANGED
data/spec/registration_spec.rb
CHANGED
data/spec/shipping_spec.rb
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
require 'spec_helper'
|
|
2
2
|
require 'canada_post'
|
|
3
|
-
require 'canada_post/shipment'
|
|
4
3
|
require 'canada_post/client'
|
|
5
4
|
|
|
6
|
-
describe CanadaPost::
|
|
5
|
+
describe CanadaPost::Request::Shipping do
|
|
7
6
|
context 'missing required parameters' do
|
|
8
7
|
it 'does raise Rate exception' do
|
|
9
8
|
expect { CanadaPost::Client.new }.to raise_error(CanadaPost::RateError)
|
|
@@ -100,16 +99,16 @@ describe CanadaPost::Shipment do
|
|
|
100
99
|
context "Create MOBO shipping (on behalf of)", :vcr do
|
|
101
100
|
let(:shipping) {
|
|
102
101
|
canada_post_service.create(
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
102
|
+
sender: sender,
|
|
103
|
+
destination: destination,
|
|
104
|
+
package: package,
|
|
105
|
+
mobo: mobo,
|
|
106
|
+
notification: notification,
|
|
107
|
+
preferences: preferences,
|
|
108
|
+
group_id: group_id[:value],
|
|
109
|
+
mailing_date: mailing_date[:value],
|
|
110
|
+
service_code: service_code[:value],
|
|
111
|
+
contract_number: contract_number[:value]
|
|
113
112
|
)
|
|
114
113
|
}
|
|
115
114
|
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: shipppit-canada-post
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.5.
|
|
4
|
+
version: 0.5.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Olivier
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2016-03-
|
|
11
|
+
date: 2016-03-09 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: httparty
|
|
@@ -150,9 +150,7 @@ files:
|
|
|
150
150
|
- lib/canada_post/request/manifest.rb
|
|
151
151
|
- lib/canada_post/request/rate.rb
|
|
152
152
|
- lib/canada_post/request/registration.rb
|
|
153
|
-
- lib/canada_post/request/shipment.rb
|
|
154
153
|
- lib/canada_post/request/shipping.rb
|
|
155
|
-
- lib/canada_post/shipment.rb
|
|
156
154
|
- lib/canada_post/version.rb
|
|
157
155
|
- spec/config/canada_post_credentials.example.yml
|
|
158
156
|
- spec/manifest_spec.rb
|
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
module CanadaPost
|
|
2
|
-
module Request
|
|
3
|
-
class Shipment < Base
|
|
4
|
-
|
|
5
|
-
def process_request
|
|
6
|
-
api_response = client(shipment_url, build_xml, shipment_headers)
|
|
7
|
-
response = parse_response(api_response)
|
|
8
|
-
|
|
9
|
-
if success?(response)
|
|
10
|
-
rate_reply_details = response[:price_quotes][:price_quote] || []
|
|
11
|
-
rate_reply_details = [rate_reply_details] if rate_reply_details.is_a? Hash
|
|
12
|
-
rate_reply_details.map do |rate_reply|
|
|
13
|
-
CanadaPost::Shipment.new(rate_reply)
|
|
14
|
-
end
|
|
15
|
-
else
|
|
16
|
-
error_message = if response[:messages]
|
|
17
|
-
response[:messages][:message][:description]
|
|
18
|
-
else
|
|
19
|
-
'api_response.response'
|
|
20
|
-
end
|
|
21
|
-
raise ShipmentError, error_message
|
|
22
|
-
end
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
private
|
|
26
|
-
|
|
27
|
-
def shipment_headers
|
|
28
|
-
api_url += "rs/{mailed by customer}/{mobo}/shipment"
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
def shipment_headers
|
|
32
|
-
{
|
|
33
|
-
'Content-type' => 'application/vnd.cpc.shipment-v7+xml',
|
|
34
|
-
'Accept' => 'application/vnd.cpc.shipment-v7+xml'
|
|
35
|
-
}
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
def build_xml
|
|
39
|
-
ns = "http://www.canadapost.ca/ws/shipment-v7"
|
|
40
|
-
builder = Nokogiri::XML::Builder.new do |xml|
|
|
41
|
-
xml.send(:"mailing-scenario", xmlns: ns) {
|
|
42
|
-
add_requested_shipment(xml)
|
|
43
|
-
}
|
|
44
|
-
end
|
|
45
|
-
builder.doc.root.to_xml
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
def add_requested_shipment(xml)
|
|
49
|
-
xml.send(:"customer-number", @customer_number)
|
|
50
|
-
add_package(xml)
|
|
51
|
-
add_services(xml)
|
|
52
|
-
add_shipper(xml)
|
|
53
|
-
add_recipient(xml)
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
def add_shipper(xml)
|
|
57
|
-
xml.send(:"origin-postal-code", @shipper[:postal_code])
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
def add_recipient(xml)
|
|
61
|
-
xml.destination {
|
|
62
|
-
add_destination(xml)
|
|
63
|
-
}
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
def add_destination(xml)
|
|
67
|
-
if @recipient[:country_code] == "CA"
|
|
68
|
-
xml.domestic {
|
|
69
|
-
xml.send(:"postal-code", @recipient[:postal_code])
|
|
70
|
-
}
|
|
71
|
-
elsif @recipient[:country_code] == "US"
|
|
72
|
-
xml.send(:"united-states") {
|
|
73
|
-
xml.send(:"zip-code", @recipient[:postal_code])
|
|
74
|
-
}
|
|
75
|
-
else
|
|
76
|
-
xml.international {
|
|
77
|
-
xml.send(:"country-code", @recipient[:country_code])
|
|
78
|
-
}
|
|
79
|
-
end
|
|
80
|
-
end
|
|
81
|
-
|
|
82
|
-
def add_services(xml)
|
|
83
|
-
if @service_type
|
|
84
|
-
xml.services {
|
|
85
|
-
xml.send(:"service-code", @service_type)
|
|
86
|
-
}
|
|
87
|
-
end
|
|
88
|
-
end
|
|
89
|
-
|
|
90
|
-
def success?(response)
|
|
91
|
-
response[:price_quotes]
|
|
92
|
-
end
|
|
93
|
-
|
|
94
|
-
end
|
|
95
|
-
end
|
|
96
|
-
end
|
data/lib/canada_post/shipment.rb
DELETED
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
module CanadaPost
|
|
2
|
-
class Shipment
|
|
3
|
-
|
|
4
|
-
def initialize(options={})
|
|
5
|
-
@credentials = Credentials.new(options)
|
|
6
|
-
end
|
|
7
|
-
|
|
8
|
-
def create(options = {})
|
|
9
|
-
Request::Shipping.new(@credentials, options).process_request
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
def get_price(shipping_id)
|
|
13
|
-
Request::Shipping.new(@credentials).get_price(shipping_id)
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
def get_label(label_url)
|
|
17
|
-
Request::Shipping.new(@credentials).get_label(label_url)
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
def get_manifest(url)
|
|
21
|
-
Request::Manifest.new(@credentials).get_manifest(url)
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
def registration_token
|
|
25
|
-
Request::Registration.new(@credentials).get_token
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
def get_merchant_info(token)
|
|
29
|
-
Request::Registration.new(@credentials).merchant_info(token)
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
def get_artifact(url)
|
|
33
|
-
manifest = Request::Manifest.new(@credentials).get_manifest(url)
|
|
34
|
-
if manifest[:errors].present?
|
|
35
|
-
return {
|
|
36
|
-
status: false,
|
|
37
|
-
error: manifest[:errors]
|
|
38
|
-
}
|
|
39
|
-
else
|
|
40
|
-
artifact_link = get_artifact_link(manifest[:manifest])
|
|
41
|
-
artifact = Request::Manifest.new(@credentials).get_artifact(artifact_link)
|
|
42
|
-
return {
|
|
43
|
-
status: true,
|
|
44
|
-
artifact: artifact
|
|
45
|
-
}
|
|
46
|
-
end
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
def get_artifact_link(manifest)
|
|
50
|
-
links = manifest[:links]
|
|
51
|
-
if links.present?
|
|
52
|
-
links[:link].each do |link|
|
|
53
|
-
if link[:rel] == 'artifact'
|
|
54
|
-
return link[:href]
|
|
55
|
-
end
|
|
56
|
-
end
|
|
57
|
-
end
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
def details(shipping_id)
|
|
61
|
-
Request::Shipping.new(@credentials).details(shipping_id)
|
|
62
|
-
end
|
|
63
|
-
|
|
64
|
-
def rate(options={})
|
|
65
|
-
Request::Rate.new(@credentials, options).process_request
|
|
66
|
-
end
|
|
67
|
-
end
|
|
68
|
-
end
|