easypost 3.0.0 → 3.1.5
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 +5 -5
- data/.travis.yml +9 -0
- data/CHANGELOG +35 -0
- data/README.md +2 -1
- data/VERSION +1 -1
- data/easypost.gemspec +24 -20
- data/lib/easypost/address.rb +47 -47
- data/lib/easypost/batch.rb +34 -38
- data/lib/easypost/carrier_account.rb +4 -6
- data/lib/easypost/customs_info.rb +3 -2
- data/lib/easypost/customs_item.rb +3 -2
- data/lib/easypost/error.rb +25 -33
- data/lib/easypost/event.rb +3 -6
- data/lib/easypost/insurance.rb +1 -3
- data/lib/easypost/item.rb +4 -8
- data/lib/easypost/object.rb +111 -113
- data/lib/easypost/order.rb +20 -18
- data/lib/easypost/parcel.rb +1 -3
- data/lib/easypost/pickup.rb +19 -18
- data/lib/easypost/pickup_rate.rb +1 -3
- data/lib/easypost/postage_label.rb +1 -3
- data/lib/easypost/print_job.rb +1 -5
- data/lib/easypost/printer.rb +18 -22
- data/lib/easypost/rate.rb +1 -3
- data/lib/easypost/refund.rb +1 -3
- data/lib/easypost/report.rb +22 -24
- data/lib/easypost/resource.rb +58 -60
- data/lib/easypost/scan_form.rb +4 -6
- data/lib/easypost/shipment.rb +84 -92
- data/lib/easypost/tracker.rb +10 -12
- data/lib/easypost/user.rb +33 -37
- data/lib/easypost/util.rb +99 -136
- data/lib/easypost/webhook.rb +22 -21
- data/lib/easypost.rb +108 -118
- metadata +33 -61
- data/circle.yml +0 -3
- data/spec/address_spec.rb +0 -81
- data/spec/batch_spec.rb +0 -48
- data/spec/carrier_account_spec.rb +0 -121
- data/spec/insurance_spec.rb +0 -69
- data/spec/item_spec.rb +0 -105
- data/spec/order_spec.rb +0 -58
- data/spec/pickup_spec.rb +0 -83
- data/spec/report_spec.rb +0 -59
- data/spec/scan_form_spec.rb +0 -46
- data/spec/shipment_spec.rb +0 -144
- data/spec/spec_helper.rb +0 -10
- data/spec/support/constant.rb +0 -106
- data/spec/tracker_spec.rb +0 -94
- data/spec/user_spec.rb +0 -88
- data/spec/webhook_spec.rb +0 -75
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: b9e4ea3a1f185f475aac49ab7985092a8ba095e928a812ad77c68eb7b450afdc
|
4
|
+
data.tar.gz: b1291c1f7325559896f109257231fba6f0e781e7f9778c619ec115a86abf9731
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f3c88ce92a498fa4a0bb45e4d0ca06aeee55158af398632ddce04c0513b0e3dae99f27d1d752f3fb6e69daf3cc536d3872c4c18ba141e20eab9e60fdc58872ae
|
7
|
+
data.tar.gz: ec5ec3ad97341782372ba9c7b3e836b451a8c23dd5b9bf27e51dfcfeb561eb1140751c9529b13bbe8b384151ac5023628dff6803fe70a57a4b34070b1d83d64a
|
data/.travis.yml
ADDED
data/CHANGELOG
CHANGED
@@ -1,3 +1,38 @@
|
|
1
|
+
=== 3.1.5 2020-12-16
|
2
|
+
|
3
|
+
* Fix attribute lookup when manually constructing objects (#105; thanks @drewtempelmeyer)
|
4
|
+
* Flatten class names and clean up some other style issues
|
5
|
+
* Fix `EasyPost::Address.create_and_verify`, broken since 3.1.0 (#108; thanks @rajbirverma)
|
6
|
+
|
7
|
+
=== 3.1.4 2020-09-29
|
8
|
+
|
9
|
+
* Don't modify params passed into Address#create (#78; thanks @TheRusskiy)
|
10
|
+
* Don't modify `carriers` and `services` parameters to `Shipment.lowest_rate` (#71 / #103, thanks @vladvinnikov and @jurisgalang)
|
11
|
+
* When constructing an easypost object, convert the key to a string (#102; thanks @Geesu)
|
12
|
+
* Expose the raw HTTP response as `#http_body` on `EasyPost::Error` objects (#101; thanks @Geesu)
|
13
|
+
|
14
|
+
=== 3.1.3 2020-06-26
|
15
|
+
|
16
|
+
* Fix bug causing Authorization header to be included in User-Agent header. All users must upgrade.
|
17
|
+
|
18
|
+
=== 3.1.2 2020-06-24
|
19
|
+
|
20
|
+
* Bad gem push. New version required.
|
21
|
+
|
22
|
+
=== 3.1.1 2020-06-23
|
23
|
+
|
24
|
+
* Fix bug where EasyPost.http_config was invalid when not explicitly initialized.
|
25
|
+
|
26
|
+
=== 3.1.0 2020-06-23
|
27
|
+
|
28
|
+
* Add Shipment Invoice and Refund Report
|
29
|
+
* Remove dependencies on `RestClient` and `MultiJson`
|
30
|
+
* Remove some deprecated endpoints
|
31
|
+
|
32
|
+
=== 3.0.1 2018-05-17
|
33
|
+
|
34
|
+
* Enforce TLS certificate validity by default
|
35
|
+
|
1
36
|
=== 3.0.0 2018-02-09
|
2
37
|
|
3
38
|
* Require use of ruby ~> 2.0 and TLSv1.2
|
data/README.md
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
# EasyPost Ruby Client Library
|
2
2
|
|
3
|
-
[
|
3
|
+
[](https://travis-ci.com/EasyPost/easypost-ruby)
|
4
|
+
[](https://badge.fury.io/rb/easypost)
|
4
5
|
|
5
6
|
|
6
7
|
EasyPost is a simple shipping API. You can sign up for an account at https://easypost.com
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
3.
|
1
|
+
3.1.5
|
data/easypost.gemspec
CHANGED
@@ -1,27 +1,31 @@
|
|
1
1
|
# coding: utf-8
|
2
|
-
|
2
|
+
|
3
|
+
lib = File.expand_path("../lib", __FILE__)
|
3
4
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
-
require
|
5
|
+
require "easypost/version"
|
5
6
|
|
6
7
|
Gem::Specification.new do |spec|
|
7
|
-
spec.name
|
8
|
-
spec.version
|
9
|
-
spec.
|
10
|
-
spec.
|
11
|
-
spec.
|
12
|
-
spec.
|
13
|
-
spec.
|
14
|
-
spec.
|
8
|
+
spec.name = "easypost"
|
9
|
+
spec.version = EasyPost::VERSION
|
10
|
+
spec.licenses = ["MIT"]
|
11
|
+
spec.date = Time.now.strftime("%Y-%m-%d")
|
12
|
+
spec.summary = "EasyPost Ruby Client Library"
|
13
|
+
spec.description = "Client library for accessing the EasyPost shipping API via Ruby."
|
14
|
+
spec.authors = ["Jake Epstein", "Andrew Tribone", "James Brown"]
|
15
|
+
spec.email = "support@easypost.com"
|
16
|
+
spec.homepage = "https://www.easypost.com/docs"
|
15
17
|
|
16
|
-
spec.files
|
17
|
-
|
18
|
-
|
19
|
-
spec.
|
20
|
-
spec.
|
18
|
+
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
19
|
+
f.match(%r{^(test|spec|features)/})
|
20
|
+
end
|
21
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
22
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
23
|
+
spec.require_paths = ["lib"]
|
24
|
+
spec.required_ruby_version = "~> 2.2"
|
21
25
|
|
22
|
-
spec.
|
23
|
-
spec.
|
24
|
-
spec.add_development_dependency
|
25
|
-
spec.add_development_dependency
|
26
|
-
spec.add_development_dependency
|
26
|
+
spec.add_development_dependency "pry", "~> 0.13"
|
27
|
+
spec.add_development_dependency "rake", "~> 13.0"
|
28
|
+
spec.add_development_dependency "rspec", "~> 3.9"
|
29
|
+
spec.add_development_dependency "webmock", "~> 3.8"
|
30
|
+
spec.add_development_dependency "vcr", "~> 5.1"
|
27
31
|
end
|
data/lib/easypost/address.rb
CHANGED
@@ -1,58 +1,58 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
attr_accessor :message # Backwards compatibility
|
4
|
-
|
5
|
-
def self.create(params={}, api_key=nil)
|
6
|
-
url = self.url
|
7
|
-
|
8
|
-
if params[:verify] || params[:verify_strict]
|
9
|
-
verify = params.delete(:verify) || []
|
10
|
-
verify_strict = params.delete(:verify_strict) || []
|
11
|
-
|
12
|
-
url += "?"
|
13
|
-
verify.each do |verification|
|
14
|
-
url += "verify[]=#{verification}&"
|
15
|
-
end
|
16
|
-
verify_strict.each do |verification|
|
17
|
-
url += "verify_strict[]=#{verification}&"
|
18
|
-
end
|
19
|
-
end
|
1
|
+
class EasyPost::Address < EasyPost::Resource
|
2
|
+
attr_accessor :message # Backwards compatibility
|
20
3
|
|
21
|
-
|
22
|
-
|
23
|
-
|
4
|
+
def self.create(params={}, api_key=nil)
|
5
|
+
url = self.url
|
6
|
+
|
7
|
+
address = params.reject { |k,_| k == :verify || k == :verify_strict }
|
8
|
+
|
9
|
+
if params[:verify] || params[:verify_strict]
|
10
|
+
verify = params[:verify] || []
|
11
|
+
verify_strict = params[:verify_strict] || []
|
24
12
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
if response.has_key?(:address)
|
32
|
-
if response.has_key?(:message)
|
33
|
-
response[:address][:message] = response[:message]
|
34
|
-
end
|
35
|
-
verified_address = EasyPost::Util::convert_to_easypost_object(response[:address], api_key)
|
36
|
-
return verified_address
|
37
|
-
else
|
38
|
-
raise Error.new("Unable to verify address.")
|
13
|
+
url += "?"
|
14
|
+
verify.each do |verification|
|
15
|
+
url += "verify[]=#{verification}&"
|
16
|
+
end
|
17
|
+
verify_strict.each do |verification|
|
18
|
+
url += "verify_strict[]=#{verification}&"
|
39
19
|
end
|
40
20
|
end
|
41
21
|
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
rescue
|
46
|
-
raise Error.new("Unable to verify address.")
|
47
|
-
end
|
22
|
+
response = EasyPost.make_request(:post, url, api_key, {address: address})
|
23
|
+
return EasyPost::Util.convert_to_easypost_object(response, api_key)
|
24
|
+
end
|
48
25
|
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
26
|
+
def self.create_and_verify(params={}, carrier=nil, api_key=nil)
|
27
|
+
wrapped_params = {}
|
28
|
+
wrapped_params[self.class_name().to_sym] = params
|
29
|
+
wrapped_params[:carrier] = carrier
|
30
|
+
response = EasyPost.make_request(:post, url + '/create_and_verify', api_key, wrapped_params)
|
31
|
+
|
32
|
+
if response.has_key?("address")
|
33
|
+
if response.has_key?("message")
|
34
|
+
response["address"]["message"] = response["message"]
|
53
35
|
end
|
36
|
+
verified_address = EasyPost::Util::convert_to_easypost_object(response["address"], api_key)
|
37
|
+
return verified_address
|
38
|
+
else
|
39
|
+
raise EasyPost::Error.new("Unable to verify address.")
|
40
|
+
end
|
41
|
+
end
|
54
42
|
|
55
|
-
|
43
|
+
def verify(params={}, carrier=nil)
|
44
|
+
begin
|
45
|
+
response = EasyPost.make_request(:get, url + '/verify?carrier=' + String(carrier), @api_key, params)
|
46
|
+
rescue
|
47
|
+
raise EasyPost::Error.new("Unable to verify address.")
|
56
48
|
end
|
49
|
+
|
50
|
+
if response.has_key?("address")
|
51
|
+
return EasyPost::Util::convert_to_easypost_object(response["address"], api_key)
|
52
|
+
else
|
53
|
+
raise EasyPost::Error.new("Unable to verify address.")
|
54
|
+
end
|
55
|
+
|
56
|
+
return self
|
57
57
|
end
|
58
58
|
end
|
data/lib/easypost/batch.rb
CHANGED
@@ -1,53 +1,49 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
class EasyPost::Batch < EasyPost::Resource
|
2
|
+
def self.create_and_buy(params={}, api_key=nil)
|
3
|
+
wrapped_params = {}
|
4
|
+
wrapped_params[self.class_name().to_sym] = params
|
5
|
+
response = EasyPost.make_request(:post, url + '/create_and_buy', api_key, wrapped_params)
|
3
6
|
|
4
|
-
|
5
|
-
|
6
|
-
wrapped_params[self.class_name().to_sym] = params
|
7
|
-
response, api_key = EasyPost.request(:post, url + '/create_and_buy', api_key, wrapped_params)
|
8
|
-
|
9
|
-
return Util.convert_to_easypost_object(response, api_key)
|
10
|
-
end
|
11
|
-
|
12
|
-
def buy(params={})
|
13
|
-
response, api_key = EasyPost.request(:post, url + '/buy', @api_key, params)
|
14
|
-
self.refresh_from(response, @api_key, true)
|
7
|
+
return EasyPost::Util.convert_to_easypost_object(response, api_key)
|
8
|
+
end
|
15
9
|
|
16
|
-
|
17
|
-
|
10
|
+
def buy(params={})
|
11
|
+
response = EasyPost.make_request(:post, url + '/buy', @api_key, params)
|
12
|
+
self.refresh_from(response, @api_key, true)
|
18
13
|
|
19
|
-
|
20
|
-
|
21
|
-
self.refresh_from(response, @api_key, true)
|
14
|
+
return self
|
15
|
+
end
|
22
16
|
|
23
|
-
|
24
|
-
|
17
|
+
def label(params={})
|
18
|
+
response = EasyPost.make_request(:post, url + '/label', @api_key, params)
|
19
|
+
self.refresh_from(response, @api_key, true)
|
25
20
|
|
26
|
-
|
27
|
-
|
28
|
-
self.refresh_from(response, @api_key, true)
|
21
|
+
return self
|
22
|
+
end
|
29
23
|
|
30
|
-
|
31
|
-
|
24
|
+
def remove_shipments(params={})
|
25
|
+
response = EasyPost.make_request(:post, url + '/remove_shipments', @api_key, params)
|
26
|
+
self.refresh_from(response, @api_key, true)
|
32
27
|
|
33
|
-
|
34
|
-
|
35
|
-
self.refresh_from(response, @api_key, true)
|
28
|
+
return self
|
29
|
+
end
|
36
30
|
|
37
|
-
|
38
|
-
|
31
|
+
def add_shipments(params={})
|
32
|
+
response = EasyPost.make_request(:post, url + '/add_shipments', @api_key, params)
|
33
|
+
self.refresh_from(response, @api_key, true)
|
39
34
|
|
40
|
-
|
41
|
-
|
35
|
+
return self
|
36
|
+
end
|
42
37
|
|
43
|
-
|
44
|
-
|
38
|
+
def stamp_and_barcode_by_reference(params={})
|
39
|
+
response = EasyPost.make_request(:get, url + '/stamp_and_barcode_by_reference', @api_key, params)
|
45
40
|
|
46
|
-
|
47
|
-
|
41
|
+
return response
|
42
|
+
end
|
48
43
|
|
49
|
-
|
50
|
-
|
44
|
+
def create_scan_form(params={})
|
45
|
+
response = EasyPost.make_request(:post, url + '/scan_form', @api_key, params)
|
51
46
|
|
47
|
+
return response
|
52
48
|
end
|
53
49
|
end
|
@@ -1,8 +1,6 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
return Util.convert_to_easypost_object(response, api_key)
|
6
|
-
end
|
1
|
+
class EasyPost::CarrierAccount < EasyPost::Resource
|
2
|
+
def self.types
|
3
|
+
response = EasyPost.make_request(:get, "/carrier_types", @api_key)
|
4
|
+
return EasyPost::Util.convert_to_easypost_object(response, api_key)
|
7
5
|
end
|
8
6
|
end
|
data/lib/easypost/error.rb
CHANGED
@@ -1,39 +1,31 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
attr_reader :code
|
9
|
-
attr_reader :errors
|
1
|
+
class EasyPost::Error < StandardError
|
2
|
+
attr_reader :message
|
3
|
+
attr_reader :status
|
4
|
+
attr_reader :http_status # deprecated
|
5
|
+
attr_reader :http_body
|
6
|
+
attr_reader :code
|
7
|
+
attr_reader :errors
|
10
8
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
9
|
+
def initialize(message = nil, status = nil, code = nil, errors = nil, http_body = nil)
|
10
|
+
@message = message
|
11
|
+
@status = status
|
12
|
+
@http_status = status # deprecated
|
13
|
+
@code = code
|
14
|
+
@errors = errors
|
15
|
+
@http_body = http_body
|
16
16
|
|
17
|
-
|
18
|
-
|
19
|
-
@errors = @json_body.fetch(:error, {}).fetch(:errors, nil)
|
17
|
+
super(message)
|
18
|
+
end
|
20
19
|
|
21
|
-
|
22
|
-
|
20
|
+
def to_s
|
21
|
+
"#{code} (#{status}): #{message} #{errors}".strip
|
22
|
+
end
|
23
23
|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
s += " #{k}: #{v}\n"
|
31
|
-
end
|
32
|
-
s += "\n"
|
33
|
-
end
|
34
|
-
end
|
35
|
-
s
|
36
|
-
end
|
24
|
+
def ==(other)
|
25
|
+
other.is_a?(EasyPost::Error) &&
|
26
|
+
message == other.message &&
|
27
|
+
status == other.status &&
|
28
|
+
code == other.code &&
|
29
|
+
errors == other.errors
|
37
30
|
end
|
38
31
|
end
|
39
|
-
|
data/lib/easypost/event.rb
CHANGED
@@ -1,10 +1,7 @@
|
|
1
1
|
require 'json'
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
def self.receive(values)
|
7
|
-
return EasyPost::Util::convert_to_easypost_object(JSON.parse(values), nil)
|
8
|
-
end
|
3
|
+
class EasyPost::Event < EasyPost::Resource
|
4
|
+
def self.receive(values)
|
5
|
+
return EasyPost::Util::convert_to_easypost_object(JSON.parse(values), nil)
|
9
6
|
end
|
10
7
|
end
|
data/lib/easypost/insurance.rb
CHANGED
data/lib/easypost/item.rb
CHANGED
@@ -1,10 +1,6 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
response, api_key = EasyPost.request(:get, url + '/retrieve_reference', api_key, params)
|
6
|
-
return EasyPost::Util::convert_to_easypost_object(response, api_key) if response
|
7
|
-
end
|
8
|
-
|
1
|
+
class EasyPost::Item < EasyPost::Resource
|
2
|
+
def self.retrieve_reference(params={}, api_key=nil)
|
3
|
+
response = EasyPost.make_request(:get, url + '/retrieve_reference', api_key, params)
|
4
|
+
return EasyPost::Util::convert_to_easypost_object(response, api_key) if response
|
9
5
|
end
|
10
6
|
end
|