finapps_core 4.0.4 → 4.0.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 +4 -4
- data/finapps_core.gemspec +1 -0
- data/lib/finapps_core/error.rb +3 -0
- data/lib/finapps_core/middleware/response/raise_error.rb +8 -10
- data/lib/finapps_core/rest/defaults.rb +4 -4
- data/lib/finapps_core/version.rb +1 -1
- data/spec/middleware/response/raise_error_spec.rb +8 -3
- data/spec/spec_helper.rb +1 -1
- metadata +33 -13
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: eba98fc6c3a8244d55bb5df6cdf3b7f6d801ca3616832d7d5212a457bc89ae00
|
4
|
+
data.tar.gz: 7a25c2e816c3d042db423f352281576a33d78c16508a78ce777b9d1846475b1d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 721f6b53b469d6a438bfeeb480f40cfb93f3ce1623859cc48275557c6db20201aea9fa2b519317ad1bd799b2ca98dbb639bf05e070b5c2672ae1ebc865db8703
|
7
|
+
data.tar.gz: 0e1056a5f6c0dd3a821c37d40d883422abe8f7a9faadac948964c909e95dbffad11d142cb5376143d6e63dee202b6b8cf4ecd1fd16a08032603fd91e0290b9c5
|
data/finapps_core.gemspec
CHANGED
@@ -30,6 +30,7 @@ Gem::Specification.new do |spec|
|
|
30
30
|
spec.add_development_dependency 'rake', '~> 12.3', '>= 12.3.1'
|
31
31
|
spec.add_development_dependency 'rspec', '~> 3.8', '>= 3.8.0'
|
32
32
|
spec.add_development_dependency 'rubocop', '~> 0.59', '>= 0.59.2'
|
33
|
+
spec.add_development_dependency 'rubocop-rspec', '~> 1.30', '>= 1.30.0'
|
33
34
|
spec.add_development_dependency 'sinatra', '~> 2.0', '>= 2.0.4'
|
34
35
|
spec.add_development_dependency 'webmock', '~> 3.4', '>= 3.4.2'
|
35
36
|
|
data/lib/finapps_core/error.rb
CHANGED
@@ -14,6 +14,9 @@ module FinAppsCore # :nodoc:
|
|
14
14
|
# Raised whenever there is a session timeout at the API.
|
15
15
|
class ApiSessionTimeoutError < Error; end
|
16
16
|
|
17
|
+
# Raised whenever the session is invalid or does not exist at the API.
|
18
|
+
class ApiUnauthenticatedError < Error; end
|
19
|
+
|
17
20
|
# Raised whenever the request specify an unsupported HTTP method.
|
18
21
|
class UnsupportedHttpMethodError < Error; end
|
19
22
|
|
@@ -6,28 +6,26 @@ using StringExtensions
|
|
6
6
|
module FinAppsCore
|
7
7
|
module Middleware
|
8
8
|
class RaiseError < Faraday::Response::Middleware # :nodoc:
|
9
|
-
SUCCESS_STATUSES = 200..299
|
9
|
+
SUCCESS_STATUSES = (200..299).freeze
|
10
|
+
API_UNAUTHENTICATED = 401
|
10
11
|
CONNECTION_FAILED_STATUS = 407
|
11
12
|
API_SESSION_TIMEOUT = 419
|
12
13
|
|
13
14
|
def on_complete(env)
|
14
15
|
return if SUCCESS_STATUSES.include?(env[:status])
|
15
16
|
|
16
|
-
if env[:status] ==
|
17
|
-
|
18
|
-
|
19
|
-
if env[:status] == CONNECTION_FAILED_STATUS
|
20
|
-
raise(FinAppsCore::Error::ConnectionFailedError, 'Connection Failed')
|
21
|
-
end
|
17
|
+
raise(FinAppsCore::ApiUnauthenticatedError, 'API Invalid Session') if env[:status] == API_UNAUTHENTICATED
|
18
|
+
raise(FinAppsCore::ApiSessionTimeoutError, 'API Session Timed out') if env[:status] == API_SESSION_TIMEOUT
|
19
|
+
raise(FinAppsCore::ConnectionFailedError, 'Connection Failed') if env[:status] == CONNECTION_FAILED_STATUS
|
22
20
|
|
23
21
|
raise(Faraday::Error::ClientError, response_values(env))
|
24
22
|
end
|
25
23
|
|
26
24
|
def response_values(env)
|
27
25
|
{
|
28
|
-
status:
|
29
|
-
headers:
|
30
|
-
body:
|
26
|
+
status: env.status,
|
27
|
+
headers: env.response_headers,
|
28
|
+
body: env.body,
|
31
29
|
error_messages: error_messages(env.body)
|
32
30
|
}
|
33
31
|
end
|
@@ -9,10 +9,10 @@ module FinAppsCore
|
|
9
9
|
|
10
10
|
# noinspection SpellCheckingInspection
|
11
11
|
DEFAULTS = {
|
12
|
-
host:
|
13
|
-
timeout:
|
14
|
-
proxy:
|
15
|
-
log_level:
|
12
|
+
host: 'https://api.financialapps.com',
|
13
|
+
timeout: 30,
|
14
|
+
proxy: nil,
|
15
|
+
log_level: Logger::INFO
|
16
16
|
}.freeze
|
17
17
|
end
|
18
18
|
end
|
data/lib/finapps_core/version.rb
CHANGED
@@ -11,9 +11,14 @@ RSpec.describe FinAppsCore::Middleware::RaiseError do
|
|
11
11
|
let(:env) { Env.new(200) }
|
12
12
|
it { expect { subject.on_complete(env) }.not_to raise_error }
|
13
13
|
end
|
14
|
-
context 'for
|
14
|
+
context 'for invalid session errors' do
|
15
15
|
let(:env) { Env.new(401, {}, '{"messages":["Invalid User Identifier or Credentials"]}') }
|
16
|
-
error_message = '
|
16
|
+
error_message = 'API Invalid Session'
|
17
|
+
it { expect { subject.on_complete(env) }.to raise_error(FinAppsCore::ApiUnauthenticatedError, error_message) }
|
18
|
+
end
|
19
|
+
context 'for client errors' do
|
20
|
+
let(:env) { Env.new(404, {}, '{"messages":["Resource Not Found"]}') }
|
21
|
+
error_message = 'the server responded with status 404'
|
17
22
|
it { expect { subject.on_complete(env) }.to raise_error(Faraday::Error::ClientError, error_message) }
|
18
23
|
end
|
19
24
|
context 'for connection failed error' do
|
@@ -21,7 +26,7 @@ RSpec.describe FinAppsCore::Middleware::RaiseError do
|
|
21
26
|
error_message = 'Connection Failed'
|
22
27
|
it { expect { subject.on_complete(env) }.to raise_error(FinAppsCore::ConnectionFailedError, error_message) }
|
23
28
|
end
|
24
|
-
context 'for
|
29
|
+
context 'for session timeout error' do
|
25
30
|
let(:env) { Env.new(419) }
|
26
31
|
error_message = 'API Session Timed out'
|
27
32
|
it { expect { subject.on_complete(env) }.to raise_error(FinAppsCore::ApiSessionTimeoutError, error_message) }
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: finapps_core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.0.
|
4
|
+
version: 4.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Erich Quintero
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-11-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -190,6 +190,26 @@ dependencies:
|
|
190
190
|
- - ">="
|
191
191
|
- !ruby/object:Gem::Version
|
192
192
|
version: 0.59.2
|
193
|
+
- !ruby/object:Gem::Dependency
|
194
|
+
name: rubocop-rspec
|
195
|
+
requirement: !ruby/object:Gem::Requirement
|
196
|
+
requirements:
|
197
|
+
- - "~>"
|
198
|
+
- !ruby/object:Gem::Version
|
199
|
+
version: '1.30'
|
200
|
+
- - ">="
|
201
|
+
- !ruby/object:Gem::Version
|
202
|
+
version: 1.30.0
|
203
|
+
type: :development
|
204
|
+
prerelease: false
|
205
|
+
version_requirements: !ruby/object:Gem::Requirement
|
206
|
+
requirements:
|
207
|
+
- - "~>"
|
208
|
+
- !ruby/object:Gem::Version
|
209
|
+
version: '1.30'
|
210
|
+
- - ">="
|
211
|
+
- !ruby/object:Gem::Version
|
212
|
+
version: 1.30.0
|
193
213
|
- !ruby/object:Gem::Dependency
|
194
214
|
name: sinatra
|
195
215
|
requirement: !ruby/object:Gem::Requirement
|
@@ -321,24 +341,24 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
321
341
|
version: '0'
|
322
342
|
requirements: []
|
323
343
|
rubyforge_project:
|
324
|
-
rubygems_version: 2.7.
|
344
|
+
rubygems_version: 2.7.6
|
325
345
|
signing_key:
|
326
346
|
specification_version: 4
|
327
347
|
summary: FinApps REST API ruby client - Core.
|
328
348
|
test_files:
|
329
|
-
- spec/
|
330
|
-
- spec/
|
349
|
+
- spec/middleware/response/raise_error_spec.rb
|
350
|
+
- spec/middleware/request/user_agent_spec.rb
|
351
|
+
- spec/middleware/request/no_encoding_basic_authentication_spec.rb
|
352
|
+
- spec/middleware/request/request_id_spec.rb
|
353
|
+
- spec/middleware/request/tenant_authentication_spec.rb
|
354
|
+
- spec/middleware/request/accept_json_spec.rb
|
331
355
|
- spec/rest/credentials_spec.rb
|
332
356
|
- spec/rest/configuration_spec.rb
|
357
|
+
- spec/rest/defaults_spec.rb
|
358
|
+
- spec/rest/base_client_spec.rb
|
333
359
|
- spec/rest/resources_spec.rb
|
334
|
-
- spec/support/fake_api.rb
|
335
360
|
- spec/utils/validatable_spec.rb
|
336
|
-
- spec/
|
361
|
+
- spec/support/fake_api.rb
|
337
362
|
- spec/spec_helper.rb
|
338
363
|
- spec/core_extensions/object/is_integer_spec.rb
|
339
|
-
- spec/
|
340
|
-
- spec/middleware/request/user_agent_spec.rb
|
341
|
-
- spec/middleware/request/tenant_authentication_spec.rb
|
342
|
-
- spec/middleware/request/accept_json_spec.rb
|
343
|
-
- spec/middleware/request/request_id_spec.rb
|
344
|
-
- spec/middleware/response/raise_error_spec.rb
|
364
|
+
- spec/spec_helpers/client.rb
|