finapps 2.0.30 → 2.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/finapps.gemspec +1 -0
- data/lib/finapps/error.rb +6 -1
- data/lib/finapps/middleware/middleware.rb +2 -0
- data/lib/finapps/middleware/request/no_encoding_basic_authentication.rb +11 -0
- data/lib/finapps/middleware/response/raise_error.rb +5 -2
- data/lib/finapps/rest/base_client.rb +8 -4
- data/lib/finapps/rest/connection.rb +1 -1
- data/lib/finapps/version.rb +1 -1
- data/spec/middleware/request/no_encoding_basic_authentication_spec.rb +11 -0
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5096a6b1981fc503ff5718b188c8b54f960db534
|
4
|
+
data.tar.gz: 28f39fcf4370f57c640d9b7bb555585fa1fc6455
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 25f29fe1caafca96681e176dba45ce2cd941eb83a357a635ee66f93a41238cadb4a07fccb14b6b22b6d3ab3d83b6546dd5848e3a775d582f73a10a49d0d7b3b8
|
7
|
+
data.tar.gz: 374ea976bc0ed5e4ccb93b390b618f64858f8353c19565b7fbcd44bc201efa701e51e41c0888e43f784ba69261939a1fbd5c09c9a46b2be3c4b5201bbc315196
|
data/finapps.gemspec
CHANGED
data/lib/finapps/error.rb
CHANGED
@@ -8,5 +8,10 @@ module FinApps # :nodoc:
|
|
8
8
|
# Raised whenever a required argument is missing.
|
9
9
|
class MissingArgumentsError < Error; end
|
10
10
|
|
11
|
-
|
11
|
+
# Raised whenever there is a session timeout at the API.
|
12
|
+
class ApiSessionTimeoutError < Error; end
|
13
|
+
|
14
|
+
%i(InvalidArgumentsError MissingArgumentsError ApiSessionTimeoutError).each do |const|
|
15
|
+
Error.const_set(const, FinApps.const_get(const))
|
16
|
+
end
|
12
17
|
end
|
@@ -5,6 +5,7 @@ module FinApps
|
|
5
5
|
module Middleware
|
6
6
|
autoload :AcceptJson, 'finapps/middleware/request/accept_json'
|
7
7
|
autoload :UserAgent, 'finapps/middleware/request/user_agent'
|
8
|
+
autoload :NoEncodingBasicAuthentication, 'finapps/middleware/request/no_encoding_basic_authentication'
|
8
9
|
autoload :TenantAuthentication, 'finapps/middleware/request/tenant_authentication'
|
9
10
|
autoload :CustomLogger, 'finapps/middleware/response/custom_logger'
|
10
11
|
|
@@ -12,6 +13,7 @@ module FinApps
|
|
12
13
|
Faraday::Request.register_middleware \
|
13
14
|
accept_json: -> { AcceptJson },
|
14
15
|
user_agent: -> { UserAgent },
|
16
|
+
no_encoding_basic_authentication: -> { NoEncodingBasicAuthentication },
|
15
17
|
tenant_authentication: -> { TenantAuthentication }
|
16
18
|
Faraday::Response.register_middleware \
|
17
19
|
custom_logger: -> { CustomLogger }
|
@@ -0,0 +1,11 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
module FinApps
|
3
|
+
module Middleware
|
4
|
+
class NoEncodingBasicAuthentication < ::Faraday::Request.load_middleware(:authorization)
|
5
|
+
def self.header(value)
|
6
|
+
sanitized = value.delete("\n")
|
7
|
+
super(:Basic, sanitized)
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
@@ -7,10 +7,13 @@ module FinApps
|
|
7
7
|
|
8
8
|
SUCCESS_STATUSES = 200..299
|
9
9
|
CONNECTION_FAILED_STATUS = 407
|
10
|
+
API_SESSION_TIMEOUT = 419
|
10
11
|
|
11
12
|
def on_complete(env)
|
12
|
-
if SUCCESS_STATUSES.include?
|
13
|
-
|
13
|
+
return if SUCCESS_STATUSES.include?(env[:status])
|
14
|
+
|
15
|
+
if env[:status] == API_SESSION_TIMEOUT
|
16
|
+
raise(FinApps::Error::ApiSessionTimeoutError, 'Api Session Timed out')
|
14
17
|
elsif env[:status] == CONNECTION_FAILED_STATUS
|
15
18
|
raise(Faraday::Error::ConnectionFailed, '407 "Proxy Authentication Required"')
|
16
19
|
else
|
@@ -73,9 +73,13 @@ module FinApps
|
|
73
73
|
end
|
74
74
|
|
75
75
|
def execute_request(path, method, params)
|
76
|
-
|
76
|
+
errors = []
|
77
|
+
|
77
78
|
begin
|
78
79
|
response = execute_method path, method, params
|
80
|
+
|
81
|
+
rescue FinApps::ApiSessionTimeoutError => error
|
82
|
+
handle_error(error)
|
79
83
|
rescue FinApps::InvalidArgumentsError => error
|
80
84
|
handle_error error
|
81
85
|
rescue FinApps::MissingArgumentsError => error
|
@@ -83,10 +87,10 @@ module FinApps
|
|
83
87
|
rescue Faraday::Error::ConnectionFailed => error
|
84
88
|
handle_error error
|
85
89
|
rescue Faraday::Error::ClientError => error
|
86
|
-
|
90
|
+
errors = handle_client_error(error)
|
87
91
|
end
|
88
92
|
|
89
|
-
[response,
|
93
|
+
[response, errors]
|
90
94
|
end
|
91
95
|
|
92
96
|
def handle_error(error)
|
@@ -95,7 +99,7 @@ module FinApps
|
|
95
99
|
end
|
96
100
|
|
97
101
|
def handle_client_error(error)
|
98
|
-
logger.warn "#{self.class}##{__method__} =>
|
102
|
+
logger.warn "#{self.class}##{__method__} => #{error.class.name}, #{error}"
|
99
103
|
error.response.present? && error.response[:error_messages] ? error.response[:error_messages] : [error.message]
|
100
104
|
end
|
101
105
|
|
@@ -18,7 +18,7 @@ module FinApps
|
|
18
18
|
conn.request :retry
|
19
19
|
conn.request :multipart
|
20
20
|
conn.request :url_encoded
|
21
|
-
conn.request :
|
21
|
+
conn.request :no_encoding_basic_authentication, config.user_token if config.valid_user_credentials?
|
22
22
|
|
23
23
|
conn.use FinApps::Middleware::RaiseError
|
24
24
|
conn.response :rashify
|
data/lib/finapps/version.rb
CHANGED
@@ -0,0 +1,11 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
RSpec.describe FinApps::Middleware::NoEncodingBasicAuthentication do
|
3
|
+
let(:valid_credentials) { VALID_CREDENTIALS }
|
4
|
+
|
5
|
+
describe '.header' do
|
6
|
+
it 'does not encode the values' do
|
7
|
+
actual_token = FinApps::Middleware::NoEncodingBasicAuthentication.header(valid_credentials[:token])
|
8
|
+
expect(actual_token).to eq("Basic #{valid_credentials[:token]}")
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: finapps
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Erich Quintero
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-10-
|
11
|
+
date: 2016-10-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -254,6 +254,7 @@ files:
|
|
254
254
|
- lib/finapps/error.rb
|
255
255
|
- lib/finapps/middleware/middleware.rb
|
256
256
|
- lib/finapps/middleware/request/accept_json.rb
|
257
|
+
- lib/finapps/middleware/request/no_encoding_basic_authentication.rb
|
257
258
|
- lib/finapps/middleware/request/tenant_authentication.rb
|
258
259
|
- lib/finapps/middleware/request/user_agent.rb
|
259
260
|
- lib/finapps/middleware/response/custom_logger.rb
|
@@ -283,6 +284,7 @@ files:
|
|
283
284
|
- spec/core_extensions/hash/compact_spec.rb
|
284
285
|
- spec/core_extensions/object/is_integer_spec.rb
|
285
286
|
- spec/middleware/request/accept_json_spec.rb
|
287
|
+
- spec/middleware/request/no_encoding_basic_authentication_spec.rb
|
286
288
|
- spec/middleware/request/tenant_authentication_spec.rb
|
287
289
|
- spec/middleware/request/user_agent_spec.rb
|
288
290
|
- spec/middleware/response/raise_error_spec.rb
|
@@ -361,6 +363,7 @@ specification_version: 4
|
|
361
363
|
summary: FinApps REST API ruby client.
|
362
364
|
test_files:
|
363
365
|
- spec/support/fake_api.rb
|
366
|
+
- spec/middleware/request/no_encoding_basic_authentication_spec.rb
|
364
367
|
- spec/middleware/request/user_agent_spec.rb
|
365
368
|
- spec/middleware/request/tenant_authentication_spec.rb
|
366
369
|
- spec/middleware/request/accept_json_spec.rb
|