shippo 2.0.3 → 2.0.4
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 +4 -4
- data/.gitignore +0 -1
- data/.travis.yml +1 -1
- data/CHANGELOG.md +11 -4
- data/Gemfile +1 -1
- data/bin/console +17 -0
- data/bin/example +2 -4
- data/lib/shippo/api.rb +3 -3
- data/lib/shippo/api/request.rb +29 -4
- data/lib/shippo/api/version.rb +1 -1
- data/lib/shippo/exceptions.rb +7 -6
- data/lib/shippo/exceptions/api_error.rb +29 -14
- data/lib/shippo/exceptions/api_server_error.rb +25 -0
- data/lib/shippo/exceptions/error.rb +39 -20
- data/shippo.gemspec +1 -2
- metadata +6 -18
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2f9bf9beca739037960540287dff9d9a95ed04b0
|
4
|
+
data.tar.gz: 1dda325c2990112fdea3cc71fcad284a28f8d4a8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 039577c829fecb5a060e9ba366a297162ea8ba5a97e4863203e037fb0b0a9c2911243d9ceedfa0537c3be112b06fffa2bb0629ba710084a49ce0a1e1123e590c
|
7
|
+
data.tar.gz: 2c79359b3e1bd3842cbce98715bf6548226b1a5a3bdf238301ceaacd8d48bc175e33ff3d5911ba7de42660aa7c2d4c41fad64ab10774a800ee6b3ddfa64ba4fe
|
data/.gitignore
CHANGED
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,12 +1,19 @@
|
|
1
|
+
#### 2.0.4 release, Oct 6th 2016
|
2
|
+
- Rails5 Compatibility via relaxed dependencies
|
3
|
+
- removing mime-types dependency
|
4
|
+
- relaxing activesupport to allow version 5
|
5
|
+
- reorganizing exceptions to enable subclassing with additional parameters and more readable #to_s method
|
6
|
+
- adding bin/console for easy irb-ing
|
7
|
+
|
1
8
|
#### 2.0.3 release, Oct 3rd 2016
|
2
9
|
|
3
|
-
|
10
|
+
- Handled RestClient::BadRequest to show response content
|
4
11
|
|
5
12
|
#### 2.0.2 release, Aug 17th 2016
|
6
13
|
|
7
|
-
|
8
|
-
|
9
|
-
|
14
|
+
- Removed gem dependency `colored2` as directly decorating object and string was causing Rals Rack to throw errors when users uploaded large files.
|
15
|
+
- Fixed url for `CarrierAccount`
|
16
|
+
- README fixes
|
10
17
|
|
11
18
|
#### 2.0.0-beta July 7th, 2016
|
12
19
|
|
data/Gemfile
CHANGED
data/bin/console
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
lib = File.expand_path('../../lib', __FILE__)
|
4
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
5
|
+
|
6
|
+
require 'bundler/setup'
|
7
|
+
require 'shippo'
|
8
|
+
|
9
|
+
# You can add fixtures and/or initialization code here to make experimenting
|
10
|
+
# with your gem easier. You can also use a different console, if you like.
|
11
|
+
|
12
|
+
# (If you use this, don't forget to add pry to your Gemfile!)
|
13
|
+
# require "pry"
|
14
|
+
# Pry.start
|
15
|
+
|
16
|
+
require 'irb'
|
17
|
+
IRB.start
|
data/bin/example
CHANGED
@@ -22,7 +22,6 @@ require 'awesome_print'
|
|
22
22
|
require 'json'
|
23
23
|
|
24
24
|
Shippo::API.token = ENV['SHIPPO_TOKEN']
|
25
|
-
Shippo::API.debug = false # set to true for debugging output
|
26
25
|
|
27
26
|
# Simple wrapper class to help us print objects to the STDOUT
|
28
27
|
class ExampleHelper
|
@@ -32,12 +31,11 @@ class ExampleHelper
|
|
32
31
|
puts 'OK'
|
33
32
|
result
|
34
33
|
rescue Exception => e
|
35
|
-
puts 'ERROR'
|
36
34
|
raise(e)
|
37
35
|
end
|
38
36
|
|
39
37
|
def self.dump_object(instance, msg = nil)
|
40
|
-
return unless
|
38
|
+
return unless Shippo::API.debug?
|
41
39
|
sep
|
42
40
|
puts "#{msg.upcase}:" if msg
|
43
41
|
puts "\#<#{instance.class.inspect}:0x#{instance.object_id.to_s(16)}> ⇒ "
|
@@ -101,7 +99,7 @@ begin
|
|
101
99
|
file.puts JSON.dump(shipment.to_hash)
|
102
100
|
end
|
103
101
|
rescue Shippo::Exceptions::APIServerError => e
|
104
|
-
puts "Server returned an error:\n#{e
|
102
|
+
puts "Server returned an error:\n#{e}"
|
105
103
|
exit 3
|
106
104
|
rescue Shippo::Exceptions::ConnectionError
|
107
105
|
puts 'Error connecting to remote host. Is your Internet working?'
|
data/lib/shippo/api.rb
CHANGED
@@ -33,12 +33,12 @@ module Shippo
|
|
33
33
|
%i[get put post].each do |method|
|
34
34
|
define_method method do |*args|
|
35
35
|
uri, params, headers = *args
|
36
|
-
request(method, uri, params || {}, headers || {})
|
36
|
+
self.request(method, uri, params || {}, headers || {})
|
37
37
|
end
|
38
38
|
end
|
39
39
|
|
40
40
|
def debug?
|
41
|
-
|
41
|
+
self.debug
|
42
42
|
end
|
43
43
|
end
|
44
44
|
end
|
@@ -47,4 +47,4 @@ end
|
|
47
47
|
Dir[File.dirname(__FILE__) + '/api/*.rb'].each {|file| require file }
|
48
48
|
Dir[File.dirname(__FILE__) + '/api/transformers/*.rb'].each {|file| require file }
|
49
49
|
Dir[File.dirname(__FILE__) + '/api/extend/*.rb'].each {|file| require file }
|
50
|
-
Dir[File.dirname(__FILE__) + '/model/*.rb'].each {|file| require file }
|
50
|
+
Dir[File.dirname(__FILE__) + '/model/*.rb'].each {|file| require file }
|
data/lib/shippo/api/request.rb
CHANGED
@@ -2,6 +2,7 @@ require 'rest_client'
|
|
2
2
|
require 'socket'
|
3
3
|
require 'json'
|
4
4
|
require 'set'
|
5
|
+
require 'awesome_print'
|
5
6
|
|
6
7
|
require 'shippo/exceptions'
|
7
8
|
|
@@ -58,8 +59,15 @@ module Shippo
|
|
58
59
|
rescue ::RestClient::Unauthorized => e
|
59
60
|
raise Shippo::Exceptions::AuthenticationError.new(e.message)
|
60
61
|
|
61
|
-
rescue ::
|
62
|
-
|
62
|
+
rescue ::RestClient::BadRequest => e
|
63
|
+
if e.respond_to?(:response) && e.response.is_a?(RestClient::Response)
|
64
|
+
awesome_print_response(e) if Shippo::API.debug?
|
65
|
+
raise Shippo::Exceptions::APIServerError.new('Backend responded with an error',
|
66
|
+
self, e.response, e.message)
|
67
|
+
end
|
68
|
+
|
69
|
+
rescue ::JSON::JSONError, ::JSON::ParserError => e
|
70
|
+
raise Shippo::Exceptions::InvalidJsonError.new(e.message)
|
63
71
|
|
64
72
|
rescue ::RestClient::BadRequest => e
|
65
73
|
raise Shippo::Exceptions::InvalidInputError.new(e.inspect)
|
@@ -81,11 +89,17 @@ module Shippo
|
|
81
89
|
private
|
82
90
|
|
83
91
|
def shippo_phone_home
|
84
|
-
payload
|
92
|
+
payload = {}
|
85
93
|
request_url = url
|
86
94
|
(method == :get) ? request_url = params_to_url(params, url) : payload = params.to_json
|
87
95
|
setup_headers!(headers)
|
88
96
|
opts = make_opts!(headers, method, payload, request_url)
|
97
|
+
|
98
|
+
if Shippo::API.debug?
|
99
|
+
puts "\nCLIENT REQUEST:"
|
100
|
+
ap opts
|
101
|
+
end
|
102
|
+
|
89
103
|
make_request!(opts)
|
90
104
|
end
|
91
105
|
|
@@ -120,6 +134,17 @@ module Shippo
|
|
120
134
|
)
|
121
135
|
end
|
122
136
|
|
137
|
+
def awesome_print_response(e)
|
138
|
+
begin
|
139
|
+
h = JSON.parse(e.response)
|
140
|
+
if h
|
141
|
+
puts "\nSERVER RESPONSE:"
|
142
|
+
ap JSON.parse(e.response)
|
143
|
+
end
|
144
|
+
rescue nil
|
145
|
+
end
|
146
|
+
end
|
147
|
+
|
123
148
|
def base
|
124
149
|
::Shippo::API.base
|
125
150
|
end
|
@@ -129,7 +154,7 @@ module Shippo
|
|
129
154
|
end
|
130
155
|
|
131
156
|
def connection_error_message(url, error)
|
132
|
-
%Q[Could not connect to the Shippo API, via URL
|
157
|
+
%Q[Could not connect to the Shippo API, via URL
|
133
158
|
#{url}.
|
134
159
|
|
135
160
|
Please check your Internet connection, try again, if the problem
|
data/lib/shippo/api/version.rb
CHANGED
data/lib/shippo/exceptions.rb
CHANGED
@@ -1,7 +1,8 @@
|
|
1
|
-
module Shippo
|
2
|
-
module Exceptions
|
3
|
-
end
|
4
|
-
end
|
5
|
-
|
6
1
|
require 'shippo/exceptions/error'
|
7
|
-
|
2
|
+
require 'shippo/exceptions/api_error'
|
3
|
+
require 'shippo/exceptions/api_server_error'
|
4
|
+
|
5
|
+
class Shippo::Exceptions::ConnectionError < Shippo::Exceptions::Error; end
|
6
|
+
class Shippo::Exceptions::AuthenticationError < Shippo::Exceptions::Error; end
|
7
|
+
class Shippo::Exceptions::MissingDataError < Shippo::Exceptions::Error; end
|
8
|
+
class Shippo::Exceptions::AbstractClassInitError < Shippo::Exceptions::Error; end
|
@@ -1,20 +1,35 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
1
|
+
module Shippo
|
2
|
+
module Exceptions
|
3
|
+
class APIError < ::Shippo::Exceptions::Error
|
4
|
+
attr_accessor :request,
|
5
|
+
:response,
|
6
|
+
:http_response_message
|
7
7
|
|
8
|
-
def to_s
|
9
|
-
"#{self.class.name} ⇨ #{req.url}#{response} ⇨ #{message}"
|
10
|
-
end
|
11
8
|
|
12
|
-
|
13
|
-
|
9
|
+
def initialize(message = nil,
|
10
|
+
request = nil,
|
11
|
+
response = nil)
|
12
|
+
super(message)
|
13
|
+
self.request = request
|
14
|
+
self.response = response
|
15
|
+
end
|
16
|
+
|
17
|
+
def to_s_members
|
18
|
+
super + %i(server_url response)
|
19
|
+
end
|
20
|
+
|
21
|
+
def server_url
|
22
|
+
@server_url ||= (request ? request.url : '')
|
23
|
+
end
|
24
|
+
end
|
14
25
|
end
|
15
26
|
end
|
16
27
|
|
17
|
-
|
18
|
-
class Shippo::Exceptions::
|
19
|
-
|
28
|
+
|
29
|
+
class Shippo::Exceptions::UnsuccessfulResponseError < Shippo::Exceptions::APIError;
|
30
|
+
end
|
31
|
+
class Shippo::Exceptions::InvalidCategoryValueError < Shippo::Exceptions::APIError;
|
32
|
+
end
|
33
|
+
class Shippo::Exceptions::InvalidJsonError < Shippo::Exceptions::APIError;
|
34
|
+
end
|
20
35
|
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'shippo/exceptions/api_error'
|
2
|
+
|
3
|
+
module Shippo
|
4
|
+
module Exceptions
|
5
|
+
#
|
6
|
+
# The +APIServerError+ happens when the server returns a parseable JSON response,
|
7
|
+
# but when such response indicates a failed operation due to either
|
8
|
+
# validation or other business, data or logic issues.
|
9
|
+
#
|
10
|
+
# The error adds the HTTP response message member, which would typically be
|
11
|
+
# "400 Bad Request"
|
12
|
+
#
|
13
|
+
class APIServerError < APIError
|
14
|
+
|
15
|
+
def initialize(message = nil, request = nil, response = nil, http_response_message = nil)
|
16
|
+
super(message, request, response)
|
17
|
+
self.http_response_message = http_response_message
|
18
|
+
end
|
19
|
+
|
20
|
+
def to_s_members
|
21
|
+
%i(http_response_message) + super
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -1,23 +1,42 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
1
|
+
module Shippo
|
2
|
+
module Exceptions
|
3
|
+
|
4
|
+
class Error < StandardError
|
5
|
+
attr_accessor :message
|
6
|
+
|
7
|
+
def initialize(thing = nil)
|
8
|
+
if thing.is_a?(String)
|
9
|
+
self.message = thing
|
10
|
+
elsif thing.respond_to?(:message)
|
11
|
+
self.message = thing.message
|
12
|
+
else
|
13
|
+
super(thing)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def to_s_members
|
18
|
+
%i()
|
19
|
+
end
|
20
|
+
|
21
|
+
def to_s
|
22
|
+
out = super
|
23
|
+
out << " (#{message}) " if message
|
24
|
+
to_s_members.each do |member|
|
25
|
+
out << member_to_s(member)
|
26
|
+
end
|
27
|
+
out
|
28
|
+
end
|
13
29
|
|
14
|
-
|
15
|
-
|
30
|
+
private
|
31
|
+
|
32
|
+
def member_to_s(member)
|
33
|
+
out = ''
|
34
|
+
value = self.send(member)
|
35
|
+
out << "\n#{sprintf('%21s', member)}: '#{value}', " if value && (value != '')
|
36
|
+
out
|
37
|
+
end
|
38
|
+
|
39
|
+
|
40
|
+
end
|
16
41
|
end
|
17
42
|
end
|
18
|
-
|
19
|
-
class Shippo::Exceptions::ConnectionError < Shippo::Exceptions::Error; end
|
20
|
-
class Shippo::Exceptions::AuthenticationError < Shippo::Exceptions::Error; end
|
21
|
-
class Shippo::Exceptions::MissingDataError < Shippo::Exceptions::Error; end
|
22
|
-
class Shippo::Exceptions::AbstractClassInitError < Shippo::Exceptions::Error; end
|
23
|
-
class Shippo::Exceptions::InvalidInputError < Shippo::Exceptions::Error; end
|
data/shippo.gemspec
CHANGED
@@ -17,10 +17,9 @@ Gem::Specification.new do |spec|
|
|
17
17
|
spec.metadata = { 'shippo_documentation' => 'https://goshippo.com/docs/' }
|
18
18
|
|
19
19
|
spec.add_dependency 'rest-client', '~> 1.8'
|
20
|
-
spec.add_dependency 'mime-types', '~> 2'
|
21
20
|
spec.add_dependency 'json', '~> 1.8'
|
22
21
|
spec.add_dependency 'hashie', '~> 3.4'
|
23
|
-
spec.add_dependency 'activesupport', '
|
22
|
+
spec.add_dependency 'activesupport', '>= 4'
|
24
23
|
spec.add_dependency 'awesome_print'
|
25
24
|
|
26
25
|
spec.add_development_dependency 'rake'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: shippo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Shippo & Contributors
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2016-10-
|
12
|
+
date: 2016-10-06 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rest-client
|
@@ -25,20 +25,6 @@ dependencies:
|
|
25
25
|
- - "~>"
|
26
26
|
- !ruby/object:Gem::Version
|
27
27
|
version: '1.8'
|
28
|
-
- !ruby/object:Gem::Dependency
|
29
|
-
name: mime-types
|
30
|
-
requirement: !ruby/object:Gem::Requirement
|
31
|
-
requirements:
|
32
|
-
- - "~>"
|
33
|
-
- !ruby/object:Gem::Version
|
34
|
-
version: '2'
|
35
|
-
type: :runtime
|
36
|
-
prerelease: false
|
37
|
-
version_requirements: !ruby/object:Gem::Requirement
|
38
|
-
requirements:
|
39
|
-
- - "~>"
|
40
|
-
- !ruby/object:Gem::Version
|
41
|
-
version: '2'
|
42
28
|
- !ruby/object:Gem::Dependency
|
43
29
|
name: json
|
44
30
|
requirement: !ruby/object:Gem::Requirement
|
@@ -71,14 +57,14 @@ dependencies:
|
|
71
57
|
name: activesupport
|
72
58
|
requirement: !ruby/object:Gem::Requirement
|
73
59
|
requirements:
|
74
|
-
- - "
|
60
|
+
- - ">="
|
75
61
|
- !ruby/object:Gem::Version
|
76
62
|
version: '4'
|
77
63
|
type: :runtime
|
78
64
|
prerelease: false
|
79
65
|
version_requirements: !ruby/object:Gem::Requirement
|
80
66
|
requirements:
|
81
|
-
- - "
|
67
|
+
- - ">="
|
82
68
|
- !ruby/object:Gem::Version
|
83
69
|
version: '4'
|
84
70
|
- !ruby/object:Gem::Dependency
|
@@ -202,6 +188,7 @@ files:
|
|
202
188
|
- Guardfile
|
203
189
|
- README.md
|
204
190
|
- Rakefile
|
191
|
+
- bin/console
|
205
192
|
- bin/example
|
206
193
|
- lib/shippo.rb
|
207
194
|
- lib/shippo/api.rb
|
@@ -227,6 +214,7 @@ files:
|
|
227
214
|
- lib/shippo/api/version.rb
|
228
215
|
- lib/shippo/exceptions.rb
|
229
216
|
- lib/shippo/exceptions/api_error.rb
|
217
|
+
- lib/shippo/exceptions/api_server_error.rb
|
230
218
|
- lib/shippo/exceptions/error.rb
|
231
219
|
- lib/shippo/model/address.rb
|
232
220
|
- lib/shippo/model/carrieraccount.rb
|