finapps_core 6.0.0 → 6.0.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|