finapps_core 6.0.0 → 6.0.1
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/lib/finapps_core/logging/content_type_formatter.rb +39 -0
- data/lib/finapps_core/rest/configuration.rb +1 -1
- data/lib/finapps_core/rest/connection.rb +4 -1
- data/lib/finapps_core/version.rb +1 -1
- data/lib/finapps_core.rb +2 -0
- data/spec/logging/conten_type_formatter_spec.rb +53 -0
- metadata +15 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d18e32588446fcca7dbf1e07e819e278d3d2abb4bf75207eba374b5c60c5f14c
|
4
|
+
data.tar.gz: 0f7f59132bdf40f76b80925390bacb4067be4a3604d45a0defdbd3f3dbe5b298
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3278d2d0ca52fcf1042923b9fe641b112b2c7956062e81527c84b5e24d3805df7479b233ded5c2e5c2fa96a7c2457107ee52afdf1c783f3a307c7b0626ad5cef
|
7
|
+
data.tar.gz: d845efa3086595a6b5c024a91a6755d92fe24fa3e85e79cc530074d4469b861c2e54c133289a19762b2c126145d2e01f9891da4617b99d98490c60af6380171e
|
@@ -0,0 +1,39 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'faraday/logging/formatter'
|
4
|
+
|
5
|
+
module FinAppsCore
|
6
|
+
module Logging
|
7
|
+
class ContenTypeFormatter < Faraday::Logging::Formatter
|
8
|
+
CONTENT_TYPE = 'Content-Type' unless defined?(ContenTypeFormatter::CONTENT_TYPE)
|
9
|
+
|
10
|
+
def response(env)
|
11
|
+
status = proc { "Status #{env.status}" }
|
12
|
+
public_send(log_level, 'response', &status)
|
13
|
+
|
14
|
+
log_headers('response', env.response_headers) if log_headers?(:response)
|
15
|
+
log_body('response', env[:body]) if env[:body] && log_body?(:response) && loggable?(env)
|
16
|
+
end
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
def loggable?(env)
|
21
|
+
loggable_types = ['application/json', 'text/plain']
|
22
|
+
process_response_type?(env, loggable_types)
|
23
|
+
end
|
24
|
+
|
25
|
+
def process_response_type?(env, content_types)
|
26
|
+
type = response_type(env)
|
27
|
+
content_types.empty? || content_types.any? do |pattern|
|
28
|
+
pattern.is_a?(Regexp) ? type.match?(pattern) : type == pattern
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def response_type(env)
|
33
|
+
type = env[:response_headers][CONTENT_TYPE].to_s
|
34
|
+
type = type.split(';', 2).first if type.index(';')
|
35
|
+
type
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -27,7 +27,7 @@ module FinAppsCore
|
|
27
27
|
def assign_attributes(new_attributes)
|
28
28
|
unless new_attributes.respond_to?(:each_pair)
|
29
29
|
fail ArgumentError, 'When assigning attributes, '\
|
30
|
-
|
30
|
+
"you must pass a hash argument, #{new_attributes.class} passed."
|
31
31
|
end
|
32
32
|
return if new_attributes.empty?
|
33
33
|
|
@@ -19,7 +19,10 @@ module FinAppsCore
|
|
19
19
|
end
|
20
20
|
|
21
21
|
def init_connection_response(conn, logger)
|
22
|
-
conn.response :logger, logger, bodies: true
|
22
|
+
conn.response :logger, logger, bodies: true,
|
23
|
+
headers: true,
|
24
|
+
formatter: FinAppsCore::Logging::ContenTypeFormatter,
|
25
|
+
log_level: :debug
|
23
26
|
conn.response :json,
|
24
27
|
content_type: /\bjson$/,
|
25
28
|
parser_options: {symbolize_names: true}
|
data/lib/finapps_core/version.rb
CHANGED
data/lib/finapps_core.rb
CHANGED
@@ -12,6 +12,8 @@ require 'finapps_core/utils/loggeable'
|
|
12
12
|
require 'finapps_core/utils/validatable'
|
13
13
|
require 'finapps_core/error'
|
14
14
|
|
15
|
+
require 'finapps_core/logging/content_type_formatter'
|
16
|
+
|
15
17
|
require 'finapps_core/middleware/request/tenant_authentication'
|
16
18
|
require 'finapps_core/middleware/request/no_encoding_basic_authentication'
|
17
19
|
require 'finapps_core/middleware/request/accept_json'
|
@@ -0,0 +1,53 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'stringio'
|
4
|
+
require 'logger'
|
5
|
+
|
6
|
+
RSpec.describe Faraday::Response::Logger do
|
7
|
+
let(:string_io) { StringIO.new }
|
8
|
+
let(:logger) { Logger.new(string_io) }
|
9
|
+
let(:conn) do
|
10
|
+
rubbles = %w(Barney Betty)
|
11
|
+
logger_options = {
|
12
|
+
bodies: true,
|
13
|
+
formatter: FinAppsCore::Logging::ContenTypeFormatter
|
14
|
+
}
|
15
|
+
|
16
|
+
Faraday.new do |b|
|
17
|
+
b.response :logger, logger, logger_options
|
18
|
+
b.adapter :test do |stubs|
|
19
|
+
stubs.get('/text') { [200, {'Content-Type' => 'text/plain'}, 'hello'] }
|
20
|
+
stubs.get('/json') { [200, {'Content-Type' => 'application/json'}, rubbles] }
|
21
|
+
stubs.get('/pdf') { [200, {'Content-Type' => 'application/pdf'}, 'binary-here'] }
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
before do
|
27
|
+
logger.level = Logger::DEBUG
|
28
|
+
end
|
29
|
+
|
30
|
+
context 'when content type is text/plain' do
|
31
|
+
before { conn.get '/text' }
|
32
|
+
|
33
|
+
it 'logs response body' do
|
34
|
+
expect(string_io.string).to match('hello')
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
context 'when content type is application/json' do
|
39
|
+
before { conn.get '/json' }
|
40
|
+
|
41
|
+
it 'logs response body' do
|
42
|
+
expect(string_io.string).to match('[\"Barney\", \"Betty\"]')
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
context 'when content type is something else' do
|
47
|
+
before { conn.get '/pdf' }
|
48
|
+
|
49
|
+
it 'does not log response body' do
|
50
|
+
expect(string_io.string).not_to match('binary-here')
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
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: 6.0.
|
4
|
+
version: 6.0.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: 2021-
|
11
|
+
date: 2021-08-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -299,6 +299,7 @@ files:
|
|
299
299
|
- lib/core_extensions/string/json_to_hash.rb
|
300
300
|
- lib/finapps_core.rb
|
301
301
|
- lib/finapps_core/error.rb
|
302
|
+
- lib/finapps_core/logging/content_type_formatter.rb
|
302
303
|
- lib/finapps_core/middleware/middleware.rb
|
303
304
|
- lib/finapps_core/middleware/request/accept_json.rb
|
304
305
|
- lib/finapps_core/middleware/request/no_encoding_basic_authentication.rb
|
@@ -319,6 +320,7 @@ files:
|
|
319
320
|
- lib/finapps_core/version.rb
|
320
321
|
- lib/tasks/releaser.rake
|
321
322
|
- spec/core_extensions/object/is_integer_spec.rb
|
323
|
+
- spec/logging/conten_type_formatter_spec.rb
|
322
324
|
- spec/middleware/request/accept_json_spec.rb
|
323
325
|
- spec/middleware/request/no_encoding_basic_authentication_spec.rb
|
324
326
|
- spec/middleware/request/request_id_spec.rb
|
@@ -372,21 +374,22 @@ signing_key:
|
|
372
374
|
specification_version: 4
|
373
375
|
summary: FinApps REST API ruby client - Core.
|
374
376
|
test_files:
|
375
|
-
- spec/
|
376
|
-
- spec/
|
377
|
-
- spec/
|
377
|
+
- spec/rest/base_client_spec.rb
|
378
|
+
- spec/rest/defaults_spec.rb
|
379
|
+
- spec/rest/configuration_spec.rb
|
380
|
+
- spec/rest/resources_spec.rb
|
381
|
+
- spec/rest/credentials_spec.rb
|
378
382
|
- spec/spec_helpers/client.rb
|
379
383
|
- spec/middleware/request/user_agent_spec.rb
|
384
|
+
- spec/middleware/request/request_id_spec.rb
|
380
385
|
- spec/middleware/request/x_consumer_id_spec.rb
|
381
|
-
- spec/middleware/request/accept_json_spec.rb
|
382
386
|
- spec/middleware/request/x_tenant_id_spec.rb
|
383
387
|
- spec/middleware/request/tenant_authentication_spec.rb
|
388
|
+
- spec/middleware/request/accept_json_spec.rb
|
384
389
|
- spec/middleware/request/no_encoding_basic_authentication_spec.rb
|
385
|
-
- spec/middleware/request/request_id_spec.rb
|
386
390
|
- spec/middleware/response/raise_error_spec.rb
|
391
|
+
- spec/support/fake_api.rb
|
392
|
+
- spec/core_extensions/object/is_integer_spec.rb
|
393
|
+
- spec/logging/conten_type_formatter_spec.rb
|
394
|
+
- spec/spec_helper.rb
|
387
395
|
- spec/utils/validatable_spec.rb
|
388
|
-
- spec/rest/configuration_spec.rb
|
389
|
-
- spec/rest/resources_spec.rb
|
390
|
-
- spec/rest/credentials_spec.rb
|
391
|
-
- spec/rest/defaults_spec.rb
|
392
|
-
- spec/rest/base_client_spec.rb
|