phaxio 2.1.0 → 2.1.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 508fcbe635de23974bfdefe06aec6811fd7f91bd03377dd4a90b971cd1b6a44f
4
- data.tar.gz: e33347de232350332fe604ecae8c0f511a3774fb9ef7c863f6a269bb53bad787
3
+ metadata.gz: 20ca6838d9718c81af9c47068205fc6afcd4b7af87575db47d1c22c079f2db00
4
+ data.tar.gz: b9414be053a4e68b5776a51833b2228c95f57b39c8dc79fc043e5fd0954dfd92
5
5
  SHA512:
6
- metadata.gz: 6a041ed3d71f144ae2c2776a69be5d947982f1eb76c2a2e748f07b245d48ac8714c9199702b71a9b8c0cd404ea6318518834cb9da9365f569cc6b35633c66e83
7
- data.tar.gz: d50baaa1fc873a3a20268fb0c56d1b902d0b922d8fcdb731d40e23d89c74bd9c6fea3e35aa66e8c7472502b5af7ac1ad060b5cec22d3fe244e816d98d9be10d5
6
+ metadata.gz: ea67ca77c04a4dd592598d3bd66ec4743d5fa97bfe61fde48c126577ee96bba5381f0dcf3191df047edb14f2a6131029418bd631602ab208b9c4ff92290b5c86
7
+ data.tar.gz: dde305fe7837eab6c76ae64580425f81d88e08fc01fecdb9959d4c354df4b2c0197671310d0e36297a004988c4bf2481b42499455fa995df02274f8fc955fe68
data/Gemfile CHANGED
@@ -3,6 +3,7 @@ source 'https://rubygems.org'
3
3
  gemspec
4
4
 
5
5
  group :development do
6
+ gem 'faraday', '~> 2.7'
6
7
  gem 'bundler'
7
8
  gem 'rake'
8
9
  gem 'rspec', '~> 3.7'
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.start_with? 'application/json'
56
- body = JSON.parse(response.body).with_indifferent_access
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
- extension = MimeTypeHelper.extension_for_mimetype content_type
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
@@ -6,6 +6,7 @@ module Phaxio
6
6
  NotFoundError
7
7
  InvalidRequestError
8
8
  RateLimitExceededError
9
+ ServiceUnavailableError
9
10
  GeneralError
10
11
  ApiConnectionError
11
12
  ].each { |error_klass_name| const_set error_klass_name, Class.new(PhaxioError) }
@@ -1,3 +1,3 @@
1
1
  module Phaxio
2
- VERSION = "2.1.0"
2
+ VERSION = "2.1.2"
3
3
  end
data/lib/phaxio.rb CHANGED
@@ -4,6 +4,7 @@ require 'tempfile'
4
4
  require 'openssl'
5
5
  require 'time'
6
6
  require 'faraday'
7
+ require 'faraday/multipart'
7
8
  require 'active_support/core_ext/hash/indifferent_access'
8
9
  require 'mime/types/full'
9
10
  require 'phaxio/version'
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.0'
20
- gem.add_dependency 'faraday', '>= 0.10', '< 2.0'
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.0
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: 2022-04-27 00:00:00.000000000 Z
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.0'
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.10'
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: '2.0'
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.0'
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.3.7
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.