konsierge-logger 0.1.0 → 0.2.0

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: fcdc6af812b4691d5094033027eb95c08527b6f9e069cfe068ff79a716e04b6a
4
+ data.tar.gz: d576ce61823c12296654ec0158aa7e96224e5b7ce126c84cbfd71a2695e2aa3a
5
5
  SHA512:
6
- metadata.gz: 35e3dc3fd52742bbeec79a9c87c64653a45c4bff73bea2879033110aaff0224d25a51cbd8d7733dd23212f4fdb7dc94a22f419368326b735caba43aae60c7ff1
7
- data.tar.gz: 97674eab33fd18cc1a8f5805bfffecf0ba4883283e57e780806650219a77bc72e3ae0b3d21f60b3b0a1fab6951911891b2732194c2df342c339bad58769d80a8
6
+ metadata.gz: e48b13dfa955f51ebe2489302bce80167ded4ceafc39292d171ac014d6a03c8b1599aa5d10c57aa8bf80d19b57d7e680c37d63879fd0f3ba7e10eb7be76a276e
7
+ data.tar.gz: a5508f2efd1b4cbf3fd9a79e61bc808139ab1ee838662e6e2e48a993599480f3d0676c2628de410081e0a88c9448d3a011b04a2ce13eac7b5b142280a357997c
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.0'.freeze
4
4
  end
5
5
  end
@@ -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,43 @@
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.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Rybolovlev
8
+ autorequire:
8
9
  bindir: exe
9
10
  cert_chain: []
10
- date: 1980-01-02 00:00:00.000000000 Z
11
- dependencies: []
11
+ date: 2026-05-12 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: logger
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: oj
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
12
41
  description: Provides a level-filtered logger wrapper and shared logger/level resolution
13
42
  logic.
14
43
  email:
@@ -17,19 +46,23 @@ executables: []
17
46
  extensions: []
18
47
  extra_rdoc_files: []
19
48
  files:
49
+ - ".rspec"
50
+ - ".rubocop.yml"
20
51
  - Rakefile
21
52
  - lib/konsierge-logger.rb
22
53
  - lib/konsierge/logger.rb
23
54
  - lib/konsierge/logger/level_filtered_logger.rb
24
55
  - lib/konsierge/logger/version.rb
25
- homepage: https://gitlab.konsierge.com/digitalbox-public/gem/konsierge-logger
56
+ - lib/konsierge/parameter_filter.rb
57
+ homepage: https://gitlab.konsierge.com/digitalbox/gem/konsierge-logger
26
58
  licenses:
27
59
  - MIT
28
60
  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
61
+ homepage_uri: https://gitlab.konsierge.com/digitalbox/gem/konsierge-logger
62
+ source_code_uri: https://gitlab.konsierge.com/digitalbox/gem/konsierge-logger
63
+ changelog_uri: https://gitlab.konsierge.com/digitalbox/gem/konsierge-logger/-/blob/main/CHANGELOG.md
32
64
  rubygems_mfa_required: 'false'
65
+ post_install_message:
33
66
  rdoc_options: []
34
67
  require_paths:
35
68
  - lib
@@ -44,7 +77,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
44
77
  - !ruby/object:Gem::Version
45
78
  version: '0'
46
79
  requirements: []
47
- rubygems_version: 4.0.10
80
+ rubygems_version: 3.1.6
81
+ signing_key:
48
82
  specification_version: 4
49
83
  summary: Shared logging utilities for Konsierge gems
50
84
  test_files: []