easypost 2.0.0 → 2.0.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|