canada-post-api 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 +4 -4
- data/README.md +97 -3
- data/canada-post-api.gemspec +2 -3
- data/lib/canada_post/version.rb +1 -1
- metadata +4 -18
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 88e2d29bd83c996e184b95fc0fca6a7d25ac8323
|
4
|
+
data.tar.gz: 0c0268d229f21fd51f99f958bd914c193db09ace
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 25d7fa690c592963af7d1b4b8354330c140e65589c82fcab66d22b2e4047e01c36fe5d5545bd7a8817c48d696d8f1a20f8634502451abdde5bd389668e40f953
|
7
|
+
data.tar.gz: 990b8e3b095722ff6c048dc8039dc9bf6afc04c8c6ef8a61e27f392d50ef67ed1c9f153b57ca678742fe50ba88699d0e6251e188c6e62810a9ccefb8bcebf278
|
data/README.md
CHANGED
@@ -1,7 +1,11 @@
|
|
1
1
|
# CanadaPost REST API V3 Wrapper
|
2
2
|
|
3
|
-
A Ruby wrapper for the CanadaPost REST API. Based extensively off the [fedex](https://github.com/jazminschroeder/fedex) gem
|
4
|
-
|
3
|
+
A Ruby wrapper for the CanadaPost REST API. Based extensively off the [fedex](https://github.com/jazminschroeder/fedex) gem.
|
4
|
+
Thanks to [jazminschroeder](https://github.com/jazminschroeder) and all contributors who helped make that a gem worth recreating for the Canada Post API
|
5
|
+
|
6
|
+
For more info see the [Official Canada Post Developer Docs](https://www.canadapost.ca/cpotools/apps/drc/home)
|
7
|
+
|
8
|
+
Current implementation for the rates endpoint only, feel free to let me know if there are other services you would like to see included or make a PR
|
5
9
|
|
6
10
|
## Installation
|
7
11
|
|
@@ -21,7 +25,97 @@ Or install it yourself as:
|
|
21
25
|
|
22
26
|
## Usage
|
23
27
|
|
24
|
-
|
28
|
+
Require the gem:
|
29
|
+
|
30
|
+
```ruby
|
31
|
+
require 'canada_post'
|
32
|
+
```
|
33
|
+
|
34
|
+
Create a service:
|
35
|
+
|
36
|
+
```ruby
|
37
|
+
canada_post_service = CanadaPost::Shipment.new( username: 'xxxx',
|
38
|
+
password: 'xxxx',
|
39
|
+
customer_number: 'xxxx',
|
40
|
+
mode: 'development' )
|
41
|
+
# mode can be 'development' or 'production'
|
42
|
+
```
|
43
|
+
|
44
|
+
### Define shipper:
|
45
|
+
|
46
|
+
```ruby
|
47
|
+
shipper = { postal_code: 'M5X1B8',
|
48
|
+
country_code: 'CA' }
|
49
|
+
# Post Code is required for US and CA shipments, not for International Shipments
|
50
|
+
```
|
51
|
+
|
52
|
+
### Define recipient:
|
53
|
+
|
54
|
+
```ruby
|
55
|
+
recipient = { postal_code: 'M5R1C6',
|
56
|
+
country_code: 'CA' }
|
57
|
+
```
|
58
|
+
|
59
|
+
### Define package:
|
60
|
+
|
61
|
+
```ruby
|
62
|
+
package = { weight: { value: 1, units: 'KG' },
|
63
|
+
dimensions: { length: 25, width: 15, height: 10, units: 'CM' } }
|
64
|
+
# weight is the only requirement for your package, Canada Post only accepts KG and CM for the time being
|
65
|
+
```
|
66
|
+
|
67
|
+
### To get service codes:
|
68
|
+
see [Canada Post Rating API docs](https://www.canadapost.ca/cpo/mc/business/productsservices/developers/services/rating/getrates/default.jsf) for service code descriptions
|
69
|
+
```ruby
|
70
|
+
$ CanadaPost::Request::Rate::SERVICE_CODES
|
71
|
+
$ => ["DOM.RP", "DOM.EP", "DOM.XP", "DOM.XP.CERT", "DOM.PC.CERT", "DOM.PC", "DOM.DT", "DOM.LIB", "USA.EP", "USA.PW.ENV", "USA.PW.PAK", "USA.PW.PARCEL", "USA.SP.AIR", "USA.TP", "USA.TP.LVM", "USA.XP", "INT.XP", "INT.IP.AIR", "INT.IP.SURF", "INT.PW.ENV", "INT.PW.PAK", "INT.PW.PARCEL", "INT.SP.AIR", "INT.SP.SURF", "INT.TP"]
|
72
|
+
```
|
73
|
+
|
74
|
+
## Get Rates:
|
75
|
+
|
76
|
+
```ruby
|
77
|
+
$ rates = canada_post_service.rate( shipper: shipper,
|
78
|
+
recipient: recipient,
|
79
|
+
package: package)
|
80
|
+
```
|
81
|
+
|
82
|
+
Not specifying a service type will return an array of all available rates
|
83
|
+
|
84
|
+
```ruby
|
85
|
+
# complete response
|
86
|
+
$ [#<CanadaPost::Rate:0x007fd783f42a88 @service_type="Expedited Parcel", @service_code="DOM.EP", @total_net_charge="8.76", @total_base_charge="7.77", @gst_taxes="0.00", @pst_taxes="0.00", @hst_taxes="1.01", @transit_time="1">, #<CanadaPost::Rate:0x007fd783f42a60 @service_type="Priority", @service_code="DOM.PC", @total_net_charge="19.14", @total_base_charge="16.21", @gst_taxes="0.00", @pst_taxes="0.00", @hst_taxes="2.20", @transit_time="1">, #<CanadaPost::Rate:0x007fd783f42a10 @service_type="Regular Parcel", @service_code="DOM.RP", @total_net_charge="8.76", @total_base_charge="7.77", @gst_taxes="0.00", @pst_taxes="0.00", @hst_taxes="1.01", @transit_time="2">, #<CanadaPost::Rate:0x007fd783f429e8 @service_type="Xpresspost", @service_code="DOM.XP", @total_net_charge="11.31", @total_base_charge="9.58", @gst_taxes="0.00", @pst_taxes="0.00", @hst_taxes="1.30", @transit_time="1">]
|
87
|
+
```
|
88
|
+
|
89
|
+
Specifying the service type will return one result
|
90
|
+
|
91
|
+
```ruby
|
92
|
+
$ service_type = 'DOM.EP'
|
93
|
+
$ rates = canada_post_service.rate( shipper: shipper,
|
94
|
+
recipient: recipient,
|
95
|
+
package: package,
|
96
|
+
service_type: service_type)
|
97
|
+
# complete response
|
98
|
+
$ [
|
99
|
+
#<CanadaPost::Rate:0x007fd783fea238
|
100
|
+
@service_type="Expedited Parcel",
|
101
|
+
@service_code="DOM.EP",
|
102
|
+
@total_net_charge="8.76",
|
103
|
+
@total_base_charge="7.77",
|
104
|
+
@gst_taxes="0.00",
|
105
|
+
@pst_taxes="0.00",
|
106
|
+
@hst_taxes="1.01",
|
107
|
+
@transit_time="1">
|
108
|
+
]
|
109
|
+
```
|
110
|
+
|
111
|
+
Your final amount will be under `total_net_charge`:
|
112
|
+
|
113
|
+
```ruby
|
114
|
+
$ rates.first.total_net_charge => '8.76' # all monetary values are CAD
|
115
|
+
```
|
116
|
+
|
117
|
+
This is still a work in progress but feel free to contribute if it will benefit you!
|
118
|
+
|
25
119
|
|
26
120
|
## Contributing
|
27
121
|
|
data/canada-post-api.gemspec
CHANGED
@@ -18,9 +18,8 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
|
-
spec.add_dependency "httparty"
|
22
|
-
spec.add_dependency "nokogiri"
|
23
|
-
spec.add_dependency "activesupport"
|
21
|
+
spec.add_dependency "httparty"
|
22
|
+
spec.add_dependency "nokogiri"
|
24
23
|
|
25
24
|
spec.add_development_dependency "bundler", "~> 1.7"
|
26
25
|
spec.add_development_dependency "rake", "~> 10.0"
|
data/lib/canada_post/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: canada-post-api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- JONBRWN
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-02-
|
11
|
+
date: 2015-02-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: httparty
|
@@ -16,30 +16,16 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - '>='
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0
|
19
|
+
version: '0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - '>='
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 0
|
26
|
+
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: nokogiri
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - '>='
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: 1.6.6
|
34
|
-
type: :runtime
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - '>='
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: 1.6.6
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: activesupport
|
43
29
|
requirement: !ruby/object:Gem::Requirement
|
44
30
|
requirements:
|
45
31
|
- - '>='
|