easypost 2.0.0 → 2.0.1
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/CHANGELOG +6 -0
- data/Gemfile.lock +1 -1
- data/VERSION +1 -1
- data/easypost.gemspec +1 -1
- data/lib/easypost.rb +2 -1
- data/lib/easypost/address.rb +16 -0
- data/lib/easypost/shipment.rb +53 -2
- data/lib/easypost/version.rb +1 -1
- data/spec/shipment_spec.rb +17 -0
- metadata +2 -2
data/CHANGELOG
CHANGED
@@ -0,0 +1,6 @@
|
|
1
|
+
=== 2.0.1 2013-07-07
|
2
|
+
|
3
|
+
* API Addition: Address.create_and_verify returns a verified address in one step.
|
4
|
+
* API Addition: Shipment.label forces the creation of additional label formats (pdf, epl2, zpl).
|
5
|
+
* API Addition: Shipment.insure purchases insurance for a shipment.
|
6
|
+
* Library Update: Added the ability to negatively filter carriers and services with Shipment.lowest_rate (e.g. '!usps').
|
data/Gemfile.lock
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.0.
|
1
|
+
2.0.1
|
data/easypost.gemspec
CHANGED
@@ -6,7 +6,7 @@ require 'easypost/version'
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
7
|
spec.name = 'easypost'
|
8
8
|
spec.version = EasyPost::VERSION
|
9
|
-
spec.date = '2013-
|
9
|
+
spec.date = '2013-07-07'
|
10
10
|
spec.summary = 'EasyPost Ruby Client Library'
|
11
11
|
spec.description = 'Client library for accessing the EasyPost shipping API via Ruby.'
|
12
12
|
spec.authors = ['Jon Calhoun', 'Sawyer Bateman']
|
data/lib/easypost.rb
CHANGED
@@ -5,6 +5,7 @@ require 'rest_client'
|
|
5
5
|
require 'multi_json'
|
6
6
|
|
7
7
|
# Resources
|
8
|
+
require 'easypost/version'
|
8
9
|
require 'easypost/util'
|
9
10
|
require 'easypost/object'
|
10
11
|
require 'easypost/resource'
|
@@ -75,7 +76,7 @@ module EasyPost
|
|
75
76
|
end
|
76
77
|
|
77
78
|
headers = {
|
78
|
-
:user_agent => "EasyPost/v2 RubyClient
|
79
|
+
:user_agent => "EasyPost/v2 RubyClient/#{VERSION}",
|
79
80
|
:authorization => "Bearer #{api_key}",
|
80
81
|
:content_type => 'application/x-www-form-urlencoded'
|
81
82
|
}.merge(headers)
|
data/lib/easypost/address.rb
CHANGED
@@ -1,6 +1,22 @@
|
|
1
1
|
module EasyPost
|
2
2
|
class Address < Resource
|
3
3
|
|
4
|
+
def self.create_and_verify(params={})
|
5
|
+
wrapped_params = {}
|
6
|
+
wrapped_params[self.class_name().to_sym] = params
|
7
|
+
response, api_key = EasyPost.request(:post, url + '/create_and_verify', @api_key, wrapped_params)
|
8
|
+
|
9
|
+
if response.has_key?(:address)
|
10
|
+
if response.has_key?(:message)
|
11
|
+
response[:address][:message] = response[:message]
|
12
|
+
end
|
13
|
+
verified_address = EasyPost::Util::convert_to_easypost_object(response[:address], api_key)
|
14
|
+
return verified_address
|
15
|
+
else
|
16
|
+
raise Error.new("Unable to verify address.")
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
4
20
|
def verify(params={})
|
5
21
|
response, api_key = EasyPost.request(:get, url + '/verify', @api_key, params)
|
6
22
|
|
data/lib/easypost/shipment.rb
CHANGED
@@ -9,12 +9,31 @@ module EasyPost
|
|
9
9
|
end
|
10
10
|
|
11
11
|
def buy(params={})
|
12
|
+
if params.instance_of?(EasyPost::Rate)
|
13
|
+
temp = params.clone
|
14
|
+
params = {}
|
15
|
+
params[:rate] = temp
|
16
|
+
end
|
17
|
+
|
12
18
|
response, api_key = EasyPost.request(:post, url + '/buy', @api_key, params)
|
13
19
|
self.refresh_from(response, @api_key, true)
|
14
20
|
|
15
21
|
return self
|
16
22
|
end
|
17
23
|
|
24
|
+
def insure(params={})
|
25
|
+
if params.is_a?(Integer) || params.is_a?(Float)
|
26
|
+
temp = params.clone
|
27
|
+
params = {}
|
28
|
+
params[:amount] = temp
|
29
|
+
end
|
30
|
+
|
31
|
+
response, api_key = EasyPost.request(:post, url + '/insure', @api_key, params)
|
32
|
+
self.refresh_from(response, @api_key, true)
|
33
|
+
|
34
|
+
return self
|
35
|
+
end
|
36
|
+
|
18
37
|
def refund(params={})
|
19
38
|
response, api_key = EasyPost.request(:get, url + '/refund', @api_key, params)
|
20
39
|
self.refresh_from(response, @api_key, true)
|
@@ -22,8 +41,14 @@ module EasyPost
|
|
22
41
|
return self
|
23
42
|
end
|
24
43
|
|
25
|
-
def
|
26
|
-
|
44
|
+
def label(params={})
|
45
|
+
if params.is_a?(String)
|
46
|
+
temp = params.clone
|
47
|
+
params = {}
|
48
|
+
params[:file_format] = temp
|
49
|
+
end
|
50
|
+
|
51
|
+
response, api_key = EasyPost.request(:get, url + '/label', @api_key, params)
|
27
52
|
self.refresh_from(response, @api_key, true)
|
28
53
|
|
29
54
|
return self
|
@@ -50,11 +75,31 @@ module EasyPost
|
|
50
75
|
carriers = carriers.split(',')
|
51
76
|
end
|
52
77
|
carriers.map!(&:downcase)
|
78
|
+
carriers.map!(&:strip)
|
79
|
+
|
80
|
+
negative_carriers = []
|
81
|
+
carriers_copy = carriers.clone
|
82
|
+
carriers_copy.each do |carrier|
|
83
|
+
if carrier[0,1] == '!'
|
84
|
+
negative_carriers << carrier[1..-1]
|
85
|
+
carriers.delete(carrier)
|
86
|
+
end
|
87
|
+
end
|
53
88
|
|
54
89
|
if !services.is_a?(Array)
|
55
90
|
services = services.split(',')
|
56
91
|
end
|
57
92
|
services.map!(&:downcase)
|
93
|
+
services.map!(&:strip)
|
94
|
+
|
95
|
+
negative_services = []
|
96
|
+
services_copy = services.clone
|
97
|
+
services_copy.each do |service|
|
98
|
+
if service[0,1] == '!'
|
99
|
+
negative_services << service[1..-1]
|
100
|
+
services.delete(service)
|
101
|
+
end
|
102
|
+
end
|
58
103
|
|
59
104
|
self.rates.each do |k|
|
60
105
|
|
@@ -62,11 +107,17 @@ module EasyPost
|
|
62
107
|
if carriers.size() > 0 && !carriers.include?(rate_carrier)
|
63
108
|
next
|
64
109
|
end
|
110
|
+
if negative_carriers.size() > 0 && negative_carriers.include?(rate_carrier)
|
111
|
+
next
|
112
|
+
end
|
65
113
|
|
66
114
|
rate_service = k.service.downcase
|
67
115
|
if services.size() > 0 && !services.include?(rate_service)
|
68
116
|
next
|
69
117
|
end
|
118
|
+
if negative_services.size() > 0 && negative_services.include?(rate_service)
|
119
|
+
next
|
120
|
+
end
|
70
121
|
|
71
122
|
if lowest == nil || k.rate.to_f < lowest.rate.to_f
|
72
123
|
lowest = k
|
data/lib/easypost/version.rb
CHANGED
data/spec/shipment_spec.rb
CHANGED
@@ -138,4 +138,21 @@ describe EasyPost::Shipment do
|
|
138
138
|
end
|
139
139
|
end
|
140
140
|
|
141
|
+
describe '#lowest_rate' do
|
142
|
+
context 'domestic shipment' do
|
143
|
+
before :all do
|
144
|
+
@shipment = EasyPost::Shipment.create(
|
145
|
+
:from_address => address_california,
|
146
|
+
:to_address => address_missouri,
|
147
|
+
:parcel => parcel_dimensions
|
148
|
+
)
|
149
|
+
end
|
150
|
+
|
151
|
+
it 'filters negative services' do
|
152
|
+
rate = @shipment.lowest_rate('USPS', '!MediaMail, !LibraryMail')
|
153
|
+
|
154
|
+
expect(rate.service).to eql('ParcelSelect')
|
155
|
+
end
|
156
|
+
end
|
157
|
+
end
|
141
158
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: easypost
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.0.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2013-
|
13
|
+
date: 2013-07-07 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rest-client
|