faraday-diario_de_bordo 0.3.0 → 0.3.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
  SHA1:
3
- metadata.gz: ea8762f1a44730a025cef737f19303b8979a0204
4
- data.tar.gz: 80ce50af8d95c9a5be9792c247519b2a0f883453
3
+ metadata.gz: 79bc61875fbd031c56f2909d8176a27ba27c07e7
4
+ data.tar.gz: ab501e2eaaf789367f630b62a41c0d0cb50e71b8
5
5
  SHA512:
6
- metadata.gz: 5b6add9f5bcd57ae1d93898104ecd68e285473dde7a171bcbf419c77d980d4fc5967f8772df5ee4852e0bb419e6774c8ef2e8833b11acac012b0d35d75b0252e
7
- data.tar.gz: 280c7829d2b1258f7fbe86fff9ed3cb746724d51f8774ed09d6673d2c0616e17c2ce129d95e8aca39b87c70d952e9f117c90e9a0af520ba69196a6dfb81723a4
6
+ metadata.gz: 7bfe43650883ef38ab23205c7c457a1d2e30d0ab89a9cf68e6a1e54c5b0ed632541658c2fa6dd3b8fe8b184650d904aaa31b9605d2422d2b156d96d1d2e0a0e1
7
+ data.tar.gz: 824a4867ca64cd87f9316346c89816772d96b87b52c3f27c8c90bbb636bb732e138fb9d5b76dd7426508bef83430a2dcc981fe6c6d7423743c6a78d77c04b759
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --color
@@ -20,6 +20,8 @@ Gem::Specification.new do |spec|
20
20
 
21
21
  spec.add_development_dependency 'bundler'
22
22
  spec.add_development_dependency 'rake', '~> 10.0'
23
+ spec.add_development_dependency 'pry-nav'
24
+ spec.add_development_dependency 'rspec'
23
25
 
24
26
  spec.add_dependency 'faraday', '~> 0.9'
25
27
  end
@@ -1,10 +1,10 @@
1
1
  require 'faraday'
2
2
  require 'diario_de_bordo'
3
+ require 'parameter_filter'
3
4
 
4
5
  module Faraday
5
6
  class DiarioDeBordo::Middleware < Response::Middleware
6
7
  DEFAULT_OPTIONS = { bodies: true }
7
- FILTERED = '[FILTERED]'.freeze
8
8
 
9
9
  attr_reader :logger, :options, :request_body, :response_body, :started_at, :ended_at
10
10
 
@@ -50,25 +50,15 @@ module Faraday
50
50
  end
51
51
 
52
52
  def dump_body(body)
53
- filter_parameters!(body)
53
+ filtered_body = parameter_filter.call(body)
54
54
 
55
- if body.respond_to?(:to_str)
56
- body.to_str
55
+ if filtered_body.respond_to?(:to_str)
56
+ filtered_body.to_str
57
57
  else
58
- pretty_inspect(body)
58
+ pretty_inspect(filtered_body)
59
59
  end.encode('UTF-8')
60
60
  end
61
61
 
62
- def filter_parameters!(body)
63
- if body.is_a?(Hash)
64
- body.each do |key, _value|
65
- if options[:filter_parameters].include?(key)
66
- body[key] = FILTERED
67
- end
68
- end
69
- end
70
- end
71
-
72
62
  def pretty_inspect(body)
73
63
  require 'pp' unless body.respond_to?(:pretty_inspect)
74
64
  body.pretty_inspect
@@ -80,6 +70,10 @@ module Faraday
80
70
  else options[:bodies]
81
71
  end
82
72
  end
73
+
74
+ def parameter_filter
75
+ @parameter_filter ||= ParameterFilter.new(options[:filter_parameters])
76
+ end
83
77
  end
84
78
  end
85
79
 
@@ -1,5 +1,5 @@
1
1
  module Faraday
2
2
  module DiarioDeBordo
3
- VERSION = '0.3.0'.freeze
3
+ VERSION = '0.3.1'.freeze
4
4
  end
5
5
  end
@@ -0,0 +1,26 @@
1
+ class ParameterFilter
2
+ FILTERED = '[FILTERED]'.freeze
3
+
4
+ def initialize(filters)
5
+ @filters = filters.map(&:to_s)
6
+ end
7
+
8
+ def call(params, parents = [])
9
+ return unless params.is_a?(Hash)
10
+ filtered_params = {}
11
+
12
+ params.each do |key, value|
13
+ parents.push(key)
14
+ if value.is_a?(Hash)
15
+ value = call(value, parents)
16
+ else
17
+ joined = parents.join('.')
18
+ value = FILTERED if @filters.include?(joined)
19
+ end
20
+ parents.pop
21
+ filtered_params[key] = value
22
+ end
23
+
24
+ filtered_params
25
+ end
26
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: faraday-diario_de_bordo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bidu Dev Team
@@ -39,6 +39,34 @@ dependencies:
39
39
  - - "~>"
40
40
  - !ruby/object:Gem::Version
41
41
  version: '10.0'
42
+ - !ruby/object:Gem::Dependency
43
+ name: pry-nav
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - ">="
47
+ - !ruby/object:Gem::Version
48
+ version: '0'
49
+ type: :development
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
56
+ - !ruby/object:Gem::Dependency
57
+ name: rspec
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
63
+ type: :development
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
42
70
  - !ruby/object:Gem::Dependency
43
71
  name: faraday
44
72
  requirement: !ruby/object:Gem::Requirement
@@ -62,6 +90,7 @@ extensions: []
62
90
  extra_rdoc_files: []
63
91
  files:
64
92
  - ".gitignore"
93
+ - ".rspec"
65
94
  - Gemfile
66
95
  - README.md
67
96
  - Rakefile
@@ -71,6 +100,7 @@ files:
71
100
  - lib/faraday/diario_de_bordo.rb
72
101
  - lib/faraday/diario_de_bordo/middleware.rb
73
102
  - lib/faraday/diario_de_bordo/version.rb
103
+ - lib/parameter_filter.rb
74
104
  homepage: https://github.com/Bidu/faraday-diario_de_bordo
75
105
  licenses: []
76
106
  metadata: {}