konsierge-logger 0.1.0 → 0.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c3e36a75e3be1e81d7b3bfa98e3cb7964d14809771916a6d51325fb175a5f21f
4
- data.tar.gz: 5024f98cfe54ab47889a80d21a2a203f2d5e7b72b7b59e579247bb01ec1f6cfc
3
+ metadata.gz: e08a7f8c161066fa5a7552ca35502f8fdebd03d71d5e9f84990fd43b04cd2970
4
+ data.tar.gz: c0683af82a4f699f14432e672d186cd2e070da420217cde41d8936ec767a6aee
5
5
  SHA512:
6
- metadata.gz: 35e3dc3fd52742bbeec79a9c87c64653a45c4bff73bea2879033110aaff0224d25a51cbd8d7733dd23212f4fdb7dc94a22f419368326b735caba43aae60c7ff1
7
- data.tar.gz: 97674eab33fd18cc1a8f5805bfffecf0ba4883283e57e780806650219a77bc72e3ae0b3d21f60b3b0a1fab6951911891b2732194c2df342c339bad58769d80a8
6
+ metadata.gz: 4bd300be43c969d99b58ca97fba6c15c5bb781095c247cb945b21d0280eb109195f9c70d1a4a6d45ac6a89bbcf8ca2e142d034a04fc1c603355d4fb0b61a323e
7
+ data.tar.gz: e028911f82f58f07b4b2c310db82b79d71e55ed3857547457e1ed540e281c41447413b603b7bbfa4da8a0dbc36b651fd6145b74b49be2db986953725285fd42d
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --require spec_helper
2
+ --format documentation
data/.rubocop.yml ADDED
@@ -0,0 +1,8 @@
1
+ ---
2
+ inherit_from:
3
+ - https://gitlab.konsierge.com/digitalbox-public/rubocop-config/-/raw/master/rubocop-gem.yml
4
+
5
+ AllCops:
6
+ TargetRubyVersion: 2.7
7
+ Exclude:
8
+ - bin/**/*
@@ -1,5 +1,5 @@
1
1
  module Konsierge
2
2
  module Logger
3
- VERSION = '0.1.0'
3
+ VERSION = '0.2.1'.freeze
4
4
  end
5
5
  end
@@ -5,6 +5,12 @@ require_relative 'logger/level_filtered_logger'
5
5
 
6
6
  module Konsierge
7
7
  module Logger
8
+ INFO = ::Logger::INFO
9
+ WARN = ::Logger::WARN
10
+ ERROR = ::Logger::ERROR
11
+ FATAL = ::Logger::FATAL
12
+ DEBUG = ::Logger::DEBUG
13
+
8
14
  module_function
9
15
 
10
16
  def resolve(logger:, log_level:, default_logger: nil)
@@ -0,0 +1,88 @@
1
+ require 'oj'
2
+
3
+ module Konsierge
4
+ class ParameterFilter
5
+ FILTERED = '[FILTERED]'.freeze
6
+
7
+ class << self
8
+ def filter(value, filters = [])
9
+ new(filters).filter(value)
10
+ end
11
+ end
12
+
13
+ def initialize(filters = [])
14
+ @filters = Array(filters).map { |filter| filter.to_s.downcase }.reject(&:empty?)
15
+ end
16
+
17
+ def filter(value, seen = nil)
18
+ seen ||= {}.compare_by_identity
19
+
20
+ case value
21
+ when Hash
22
+ return seen[value] if seen.key?(value)
23
+
24
+ filter_hash(value, seen)
25
+ when Array
26
+ return seen[value] if seen.key?(value)
27
+
28
+ filter_array(value, seen)
29
+ when String
30
+ filter_string(value, seen)
31
+ else
32
+ value
33
+ end
34
+ end
35
+
36
+ private
37
+
38
+ def filter_hash(hash, seen)
39
+ result = {}
40
+ seen[hash] = result
41
+
42
+ hash.each do |key, value|
43
+ result[key] = sensitive_key?(key) ? FILTERED : filter(value, seen)
44
+ end
45
+
46
+ result
47
+ end
48
+
49
+ def filter_array(array, seen)
50
+ result = []
51
+ seen[array] = result
52
+
53
+ array.each do |item|
54
+ result << filter(item, seen)
55
+ end
56
+
57
+ result
58
+ end
59
+
60
+ def filter_string(value, seen)
61
+ parsed_value = try_json(value)
62
+ return Oj.dump(filter(parsed_value, seen), mode: :compat) unless parsed_value.nil?
63
+
64
+ filter_form_encoded(value)
65
+ end
66
+
67
+ def filter_form_encoded(value)
68
+ value.gsub(/([^&=\s]+)=([^&]*)/) do
69
+ key = ::Regexp.last_match(1)
70
+ sensitive_key?(key) ? "#{key}=#{FILTERED}" : ::Regexp.last_match(0)
71
+ end
72
+ end
73
+
74
+ def try_json(value)
75
+ trimmed_value = value.strip
76
+ return unless trimmed_value.start_with?('{', '[')
77
+
78
+ Oj.load(trimmed_value, mode: :compat)
79
+ rescue StandardError
80
+ nil
81
+ end
82
+
83
+ def sensitive_key?(key)
84
+ normalized_key = key.to_s.downcase
85
+ @filters.any? { |filter| normalized_key.include?(filter) }
86
+ end
87
+ end
88
+ end
@@ -1 +1,2 @@
1
1
  require_relative 'konsierge/logger'
2
+ require_relative 'konsierge/parameter_filter'
metadata CHANGED
@@ -1,14 +1,42 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: konsierge-logger
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Rybolovlev
8
8
  bindir: exe
9
9
  cert_chain: []
10
10
  date: 1980-01-02 00:00:00.000000000 Z
11
- dependencies: []
11
+ dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: logger
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - ">="
17
+ - !ruby/object:Gem::Version
18
+ version: '0'
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - ">="
24
+ - !ruby/object:Gem::Version
25
+ version: '0'
26
+ - !ruby/object:Gem::Dependency
27
+ name: oj
28
+ requirement: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: '0'
12
40
  description: Provides a level-filtered logger wrapper and shared logger/level resolution
13
41
  logic.
14
42
  email:
@@ -17,18 +45,21 @@ executables: []
17
45
  extensions: []
18
46
  extra_rdoc_files: []
19
47
  files:
48
+ - ".rspec"
49
+ - ".rubocop.yml"
20
50
  - Rakefile
21
51
  - lib/konsierge-logger.rb
22
52
  - lib/konsierge/logger.rb
23
53
  - lib/konsierge/logger/level_filtered_logger.rb
24
54
  - lib/konsierge/logger/version.rb
25
- homepage: https://gitlab.konsierge.com/digitalbox-public/gem/konsierge-logger
55
+ - lib/konsierge/parameter_filter.rb
56
+ homepage: https://gitlab.konsierge.com/digitalbox/gem/konsierge-logger
26
57
  licenses:
27
58
  - MIT
28
59
  metadata:
29
- homepage_uri: https://gitlab.konsierge.com/digitalbox-public/gem/konsierge-logger
30
- source_code_uri: https://gitlab.konsierge.com/digitalbox-public/gem/konsierge-logger
31
- changelog_uri: https://gitlab.konsierge.com/digitalbox-public/gem/konsierge-logger/-/blob/main/CHANGELOG.md
60
+ homepage_uri: https://gitlab.konsierge.com/digitalbox/gem/konsierge-logger
61
+ source_code_uri: https://gitlab.konsierge.com/digitalbox/gem/konsierge-logger
62
+ changelog_uri: https://gitlab.konsierge.com/digitalbox/gem/konsierge-logger/-/blob/main/CHANGELOG.md
32
63
  rubygems_mfa_required: 'false'
33
64
  rdoc_options: []
34
65
  require_paths: