shipppit-canada-post 0.5.1 → 0.5.2
Sign up to get free protection for your applications and to get access to all the features.
- 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
|