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 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.