phaxio 2.1.0 → 2.1.2
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/Gemfile +1 -0
- data/lib/phaxio/client.rb +12 -6
- data/lib/phaxio/error.rb +1 -0
- data/lib/phaxio/version.rb +1 -1
- data/lib/phaxio.rb +1 -0
- data/phaxio.gemspec +3 -2
- data/spec/client_spec.rb +17 -0
- metadata +20 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 20ca6838d9718c81af9c47068205fc6afcd4b7af87575db47d1c22c079f2db00
|
4
|
+
data.tar.gz: b9414be053a4e68b5776a51833b2228c95f57b39c8dc79fc043e5fd0954dfd92
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ea67ca77c04a4dd592598d3bd66ec4743d5fa97bfe61fde48c126577ee96bba5381f0dcf3191df047edb14f2a6131029418bd631602ab208b9c4ff92290b5c86
|
7
|
+
data.tar.gz: dde305fe7837eab6c76ae64580425f81d88e08fc01fecdb9959d4c354df4b2c0197671310d0e36297a004988c4bf2481b42499455fa995df02274f8fc955fe68
|
data/Gemfile
CHANGED
data/lib/phaxio/client.rb
CHANGED
@@ -52,13 +52,17 @@ module Phaxio
|
|
52
52
|
def handle_response response
|
53
53
|
content_type = response.headers[:content_type]
|
54
54
|
|
55
|
-
if content_type
|
56
|
-
|
55
|
+
if content_type
|
56
|
+
if content_type.start_with? 'application/json'
|
57
|
+
body = JSON.parse(response.body).with_indifferent_access
|
58
|
+
else
|
59
|
+
extension = MimeTypeHelper.extension_for_mimetype content_type
|
60
|
+
filename = File.join Dir.tmpdir, tmpname(extension)
|
61
|
+
File.open(filename, 'wb') { |file| file.write response.body }
|
62
|
+
body = {'success' => response.success?, 'data' => File.open(filename, 'rb')}
|
63
|
+
end
|
57
64
|
else
|
58
|
-
|
59
|
-
filename = File.join Dir.tmpdir, tmpname(extension)
|
60
|
-
File.open(filename, 'wb') { |file| file.write response.body }
|
61
|
-
body = {'success' => response.success?, 'data' => File.open(filename, 'rb')}
|
65
|
+
body = {}
|
62
66
|
end
|
63
67
|
|
64
68
|
if response.success?
|
@@ -85,6 +89,8 @@ module Phaxio
|
|
85
89
|
raise Error::InvalidRequestError, "#{status}: #{message}"
|
86
90
|
when 429
|
87
91
|
raise Error::RateLimitExceededError, "#{status}: #{message}"
|
92
|
+
when 503
|
93
|
+
raise Error::ServiceUnavailableError, "#{status}: #{message}"
|
88
94
|
else
|
89
95
|
raise Error::GeneralError, "#{status}: #{message}"
|
90
96
|
end
|
data/lib/phaxio/error.rb
CHANGED
data/lib/phaxio/version.rb
CHANGED
data/lib/phaxio.rb
CHANGED
data/phaxio.gemspec
CHANGED
@@ -16,8 +16,9 @@ Gem::Specification.new do |gem|
|
|
16
16
|
gem.version = Phaxio::VERSION
|
17
17
|
gem.licenses = ['MIT']
|
18
18
|
|
19
|
-
gem.required_ruby_version = '>= 2.
|
20
|
-
gem.add_dependency 'faraday', '
|
19
|
+
gem.required_ruby_version = '>= 2.7'
|
20
|
+
gem.add_dependency 'faraday', '~> 2.7'
|
21
|
+
gem.add_dependency 'faraday-multipart'
|
21
22
|
gem.add_dependency 'mime-types', '~> 3.0'
|
22
23
|
gem.add_dependency 'activesupport'
|
23
24
|
end
|
data/spec/client_spec.rb
CHANGED
@@ -19,6 +19,16 @@ RSpec.describe Phaxio::Client do
|
|
19
19
|
)
|
20
20
|
end
|
21
21
|
|
22
|
+
def test_response_503
|
23
|
+
instance_double(
|
24
|
+
Faraday::Response,
|
25
|
+
status: 503,
|
26
|
+
success?: false,
|
27
|
+
headers: {},
|
28
|
+
body: nil
|
29
|
+
)
|
30
|
+
end
|
31
|
+
|
22
32
|
describe 'making a request' do
|
23
33
|
it 'sends the request to Phaxio' do
|
24
34
|
endpoint = 'public/countries/'
|
@@ -118,6 +128,13 @@ RSpec.describe Phaxio::Client do
|
|
118
128
|
}.to raise_error(Phaxio::Error::RateLimitExceededError, '429: This is a test.')
|
119
129
|
end
|
120
130
|
|
131
|
+
it 'raises a service unavailable error if the response status is 503' do
|
132
|
+
expect(test_connection).to receive(:get) { test_response_503 }
|
133
|
+
expect {
|
134
|
+
client.request :get, 'test'
|
135
|
+
}.to raise_error(Phaxio::Error::ServiceUnavailableError, '503: ')
|
136
|
+
end
|
137
|
+
|
121
138
|
it 'raises a general error for if the response status is 5XX' do
|
122
139
|
expect(test_connection).to receive(:get) { test_response 500 }
|
123
140
|
expect {
|
metadata
CHANGED
@@ -1,35 +1,43 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: phaxio
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.1.
|
4
|
+
version: 2.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Julien Negrotto
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-11-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '0.10'
|
20
|
-
- - "<"
|
17
|
+
- - "~>"
|
21
18
|
- !ruby/object:Gem::Version
|
22
|
-
version: '2.
|
19
|
+
version: '2.7'
|
23
20
|
type: :runtime
|
24
21
|
prerelease: false
|
25
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '2.7'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: faraday-multipart
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
26
30
|
requirements:
|
27
31
|
- - ">="
|
28
32
|
- !ruby/object:Gem::Version
|
29
|
-
version: '0
|
30
|
-
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
31
39
|
- !ruby/object:Gem::Version
|
32
|
-
version: '
|
40
|
+
version: '0'
|
33
41
|
- !ruby/object:Gem::Dependency
|
34
42
|
name: mime-types
|
35
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -164,14 +172,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
164
172
|
requirements:
|
165
173
|
- - ">="
|
166
174
|
- !ruby/object:Gem::Version
|
167
|
-
version: '2.
|
175
|
+
version: '2.7'
|
168
176
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
169
177
|
requirements:
|
170
178
|
- - ">="
|
171
179
|
- !ruby/object:Gem::Version
|
172
180
|
version: '0'
|
173
181
|
requirements: []
|
174
|
-
rubygems_version: 3.
|
182
|
+
rubygems_version: 3.4.10
|
175
183
|
signing_key:
|
176
184
|
specification_version: 4
|
177
185
|
summary: Official ruby gem for interacting with Phaxio's API.
|