timber 2.0.8 → 2.0.9

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
  SHA1:
3
- metadata.gz: 39440c7ae6a4d416b54191200b5a406681750be5
4
- data.tar.gz: 04de3467c2bc3bdc363d1816ea892a74b4b237cc
3
+ metadata.gz: 77cca27158a28ec9275818a2efaba37229e2d121
4
+ data.tar.gz: 5423ac901328f3c57811bfc1a7855970d798b55c
5
5
  SHA512:
6
- metadata.gz: c2d65105138fa4e900262dc15274c4a4dbc79b1ecb89a91ffedefcdc64371933d12e5157cb16ffe8999e48375255d2186f7e0cd62ab30efafe13ee9074d2d2a8
7
- data.tar.gz: 9e1562e6465a72a7e491841617d58ec5dd1dd10d6174a34a92fba8817fcd80e9d8433555c7e1ead74022fd0bb90b314dc3b3ea8cbb78b61c31c92dba8dcda6a7
6
+ metadata.gz: b58fb47529e061305c0d178458bf2a5bc170610986492fd4a9573f1fae52ad85b5809f12ec2e2dea7b6553441d10a5d849c63cdfff0ae1cc573bf27e3a0f0d4b
7
+ data.tar.gz: 7a9d4dcde4b68e23b15a62a2e607c76fb371dd313dd28a9d650607be12d3af3fb97e0f6e3ad273ae2ac46762025541d918c7ca065fd3ee045483b65ba75c5fb9
@@ -49,15 +49,7 @@ module Timber
49
49
 
50
50
  def sanitize_params(params)
51
51
  if params.is_a?(::Hash)
52
- params.each_with_object({}) do |(k, v), h|
53
- k = k.to_s.downcase
54
- case k
55
- when PASSWORD_NAME
56
- h[k] = SANITIZED_VALUE
57
- else
58
- h[k] = v
59
- end
60
- end
52
+ Util::Hash.sanitize(params, [PASSWORD_NAME])
61
53
  else
62
54
  params
63
55
  end
@@ -37,8 +37,9 @@ module Timber
37
37
  def parse_backtrace_line(line)
38
38
  # using split for performance reasons
39
39
  file, line, function_part = line.split(":", 3)
40
- _prefix, function = function_part.split("`", 2)
41
- {file: file, line: line.to_i, function: function.chomp("'")}
40
+ _prefix, function_pre = function_part.split("`", 2)
41
+ function = Util::Object.try(function_pre, :chomp, "'")
42
+ {file: file, line: line.to_i, function: function}
42
43
  end
43
44
  end
44
45
  end
@@ -2,6 +2,8 @@ module Timber
2
2
  module Util
3
3
  # @private
4
4
  module Hash
5
+ SANITIZED_VALUE = '[sanitized]'.freeze
6
+
5
7
  extend self
6
8
 
7
9
  def deep_compact(hash)
@@ -21,6 +23,17 @@ module Timber
21
23
 
22
24
  new_hash
23
25
  end
26
+
27
+ def sanitize(hash, keys_to_sanitize)
28
+ hash.each_with_object({}) do |(k, v), h|
29
+ k = k.to_s.downcase
30
+ if keys_to_sanitize.include?(k)
31
+ h[k] = SANITIZED_VALUE
32
+ else
33
+ h[k] = v
34
+ end
35
+ end
36
+ end
24
37
  end
25
38
  end
26
39
  end
@@ -3,7 +3,6 @@ module Timber
3
3
  module HTTPEvent
4
4
  AUTHORIZATION_HEADER = 'authorization'.freeze
5
5
  QUERY_STRING_LIMIT = 5_000.freeze
6
- SANITIZED_VALUE = '[sanitized]'.freeze
7
6
 
8
7
  extend self
9
8
 
@@ -25,22 +24,15 @@ module Timber
25
24
 
26
25
  def normalize_headers(headers)
27
26
  if headers.is_a?(::Hash)
28
- headers.each_with_object({}) do |(k, v), h|
29
- k = k.to_s.downcase
30
- case k
31
- when AUTHORIZATION_HEADER
32
- h[k] = SANITIZED_VALUE
33
- else
34
- if Config.instance.header_filters && Config.instance.header_filters.include?(k)
35
- h[k] = SANITIZED_VALUE
36
- else
37
- # Force the header into a valid UTF-8 string, otherwise we will encounter
38
- # encoding issues when we convert this data to json. Moreoever, if the
39
- # data is already valid UTF-8 we don't pay a penalty.
40
- h[k] = Timber::Util::String.normalize_to_utf8(v)
41
- end
42
- end
27
+ h = headers.each_with_object({}) do |(k, v), h|
28
+ # Force the header into a valid UTF-8 string, otherwise we will encounter
29
+ # encoding issues when we convert this data to json. Moreoever, if the
30
+ # data is already valid UTF-8 we don't pay a penalty.
31
+ h[k] = Timber::Util::String.normalize_to_utf8(v)
43
32
  end
33
+
34
+ keys_to_sanitize = [AUTHORIZATION_HEADER] + (Config.instance.header_filters || [])
35
+ Util::Hash.sanitize(h, keys_to_sanitize)
44
36
  else
45
37
  headers
46
38
  end
@@ -3,11 +3,11 @@ module Timber
3
3
  # @private
4
4
  module Object
5
5
  # @private
6
- def self.try(object, method)
6
+ def self.try(object, method, *args)
7
7
  if object == nil
8
8
  nil
9
9
  else
10
- object.send(method) rescue object
10
+ object.send(method, *args) rescue object
11
11
  end
12
12
  end
13
13
  end
@@ -1,3 +1,3 @@
1
1
  module Timber
2
- VERSION = "2.0.8"
2
+ VERSION = "2.0.9"
3
3
  end
@@ -0,0 +1,12 @@
1
+ # encoding: UTF-8
2
+
3
+ require "spec_helper"
4
+
5
+ describe Timber::Events::ControllerCall, :rails_23 => true do
6
+ describe ".initialize" do
7
+ it "sanitizes the password param" do
8
+ event = described_class.new(controller: 'controller', action: 'action', params: {password: 'password'})
9
+ expect(event.params).to eq({'password' => '[sanitized]'})
10
+ end
11
+ end
12
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: timber
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.8
4
+ version: 2.0.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Timber Technologies, Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-04-03 00:00:00.000000000 Z
11
+ date: 2017-04-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: msgpack
@@ -230,6 +230,7 @@ files:
230
230
  - spec/timber/contexts_spec.rb
231
231
  - spec/timber/current_context_spec.rb
232
232
  - spec/timber/event_spec.rb
233
+ - spec/timber/events/controller_call_spec.rb
233
234
  - spec/timber/events/custom_spec.rb
234
235
  - spec/timber/events/http_server_request_spec.rb
235
236
  - spec/timber/events_spec.rb
@@ -285,6 +286,7 @@ test_files:
285
286
  - spec/timber/contexts_spec.rb
286
287
  - spec/timber/current_context_spec.rb
287
288
  - spec/timber/event_spec.rb
289
+ - spec/timber/events/controller_call_spec.rb
288
290
  - spec/timber/events/custom_spec.rb
289
291
  - spec/timber/events/http_server_request_spec.rb
290
292
  - spec/timber/events_spec.rb