reverb 0.0.3 → 0.0.4
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 +4 -4
- data/README.md +44 -0
- data/lib/reverb.rb +4 -3
- data/lib/reverb/configuration.rb +16 -0
- data/lib/reverb/core.rb +9 -0
- data/lib/reverb/response.rb +88 -14
- metadata +6 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d253f03805c6dfea7a968b0c6f98cfd7eff557ce
|
4
|
+
data.tar.gz: 2f988191d4ee9e915a73814aa1288bc0e6df7414
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bff291d48bc230bac6ac13109c2a93e16a59a23b94e501001b5b7a3d617a59a43ea6ee3d26db99598735cac60d19fa1eb40c644514c933cc71e7bd6f491fbc10
|
7
|
+
data.tar.gz: 0446afe9a2a9f7fec238bea268080f78762a97be7721ed3c94d17abad3f187f0f7f86232ac61b671d4b4d24974b9a9d95f3ed8dc95461e68cb31feafeff2c5e3
|
data/README.md
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
Reverb
|
2
2
|
======
|
3
3
|
|
4
|
+
[](https://semaphoreci.com/awesomenesstv/reverb--2)
|
5
|
+
|
4
6
|
Reverb provides a generic interface for responding to API requests.
|
5
7
|
|
6
8
|
|
@@ -43,6 +45,8 @@ The only methods that are considered part of the public API are:
|
|
43
45
|
* `status`
|
44
46
|
* `data`
|
45
47
|
* `on_success`
|
48
|
+
* `scrub`
|
49
|
+
* `scrubbed`
|
46
50
|
|
47
51
|
`on_success` only gets called if `success?` is true.
|
48
52
|
|
@@ -61,6 +65,46 @@ Include them after requiring FactoryGirl:
|
|
61
65
|
require 'reverb/factories'
|
62
66
|
|
63
67
|
|
68
|
+
Sensitive Data
|
69
|
+
--------------
|
70
|
+
|
71
|
+
Responses may be scrubbed to remove sensitive data such as credentials.
|
72
|
+
Use `response.scrubbed` to access the 'scrubbed' version of the response.
|
73
|
+
|
74
|
+
By default, Reverb will scrub etags.
|
75
|
+
|
76
|
+
To turn this off, set `scrub_etags` to false in a configuration block:
|
77
|
+
|
78
|
+
```
|
79
|
+
Reverb.configure do |config|
|
80
|
+
config.scrub_etags = false
|
81
|
+
end
|
82
|
+
```
|
83
|
+
|
84
|
+
|
85
|
+
To turn off scrubbing entirely, set `scrub` to false a configuration block:
|
86
|
+
This will cause no scrubbing to occur, even if `scrub_etags` is set to true.
|
87
|
+
|
88
|
+
```
|
89
|
+
Reverb.configure do |config|
|
90
|
+
config.scrub = false
|
91
|
+
end
|
92
|
+
```
|
93
|
+
|
94
|
+
|
95
|
+
To scrub custom values, simply call `scrub` with the regex/string
|
96
|
+
to scrub and a replacement string.
|
97
|
+
|
98
|
+
```
|
99
|
+
response = Reverb::Response.new(original_response)
|
100
|
+
response.scrub 'sensitive-string', 'YOU_CANT_SEE_ME'
|
101
|
+
```
|
102
|
+
|
103
|
+
The code above will replace all occurences
|
104
|
+
of 'sensitive-string' with 'YOU_CANT_SEE_ME'.
|
105
|
+
|
106
|
+
|
107
|
+
|
64
108
|
Deployment
|
65
109
|
----------
|
66
110
|
|
data/lib/reverb.rb
CHANGED
data/lib/reverb/core.rb
ADDED
data/lib/reverb/response.rb
CHANGED
@@ -5,29 +5,103 @@ module Reverb
|
|
5
5
|
attr_accessor :status, :success, :data
|
6
6
|
|
7
7
|
def initialize(response = nil)
|
8
|
-
@status
|
9
|
-
@success
|
10
|
-
@body
|
8
|
+
@status = nil
|
9
|
+
@success = false
|
10
|
+
@body = nil
|
11
|
+
@response = response
|
12
|
+
@scrubbers = {}
|
11
13
|
|
12
|
-
if response
|
13
|
-
@response = response
|
14
|
-
|
15
|
-
@status = @response.status
|
16
|
-
@success = @response.success?
|
17
|
-
|
18
|
-
if success?
|
19
|
-
@body = JSON.parse(response.body)
|
20
|
-
on_success
|
21
|
-
end
|
22
|
-
end
|
14
|
+
process_response if @response
|
23
15
|
end
|
24
16
|
|
25
17
|
def success?
|
26
18
|
@success
|
27
19
|
end
|
28
20
|
|
21
|
+
def scrubbed
|
22
|
+
return @scrubbed if defined?(@scrubbed)
|
23
|
+
|
24
|
+
scrub etag, 'ETAG' if Configuration.current.scrub_etag && etag
|
25
|
+
|
26
|
+
scrubbers = @scrubbers
|
27
|
+
@scrubbers = {}
|
28
|
+
|
29
|
+
@scrubbed = PP.pp(self, '')
|
30
|
+
|
31
|
+
scrub_all scrubbers
|
32
|
+
|
33
|
+
@scrubbers = scrubbers
|
34
|
+
|
35
|
+
@scrubbed
|
36
|
+
end
|
37
|
+
|
38
|
+
def scrub(regex, value)
|
39
|
+
return self unless regex
|
40
|
+
@scrubbers[regex] = value
|
41
|
+
self
|
42
|
+
end
|
43
|
+
|
29
44
|
private
|
30
45
|
|
46
|
+
def process_response
|
47
|
+
@status = @response.status
|
48
|
+
@success = @response.success?
|
49
|
+
|
50
|
+
if success?
|
51
|
+
@body = JSON.parse(@response.body)
|
52
|
+
on_success
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
def scrub_all(scrubbers)
|
57
|
+
return unless Configuration.current.scrub
|
58
|
+
scrubbers.each do |regex, value|
|
59
|
+
wipe regex, value
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
def wipe(regex, value)
|
64
|
+
value ||= 'NIL_SCRUB'
|
65
|
+
|
66
|
+
regexes(regex).each do |match|
|
67
|
+
@scrubbed = @scrubbed.gsub(match, value)
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
def regexes(regex)
|
72
|
+
return [regex] unless regex.is_a?(String)
|
73
|
+
|
74
|
+
escaped = CGI.escape(regex)
|
75
|
+
|
76
|
+
list = Set.new([regex])
|
77
|
+
list << escaped
|
78
|
+
list << escaped.gsub('+', '%20').gsub('%2F', '/')
|
79
|
+
|
80
|
+
list
|
81
|
+
end
|
82
|
+
|
83
|
+
def etag
|
84
|
+
raw_etag &&
|
85
|
+
@response.env.response_headers['etag'].gsub(/"/, '')
|
86
|
+
end
|
87
|
+
|
88
|
+
def raw_etag
|
89
|
+
response_headers &&
|
90
|
+
@response.env.response_headers.is_a?(Hash) &&
|
91
|
+
@response.env.response_headers['etag'] || nil
|
92
|
+
end
|
93
|
+
|
94
|
+
def response_headers
|
95
|
+
response_env &&
|
96
|
+
@response.env.respond_to?(:response_headers) &&
|
97
|
+
@response.env.response_headers || nil
|
98
|
+
end
|
99
|
+
|
100
|
+
def response_env
|
101
|
+
@response.respond_to?(:env) &&
|
102
|
+
@response.env || nil
|
103
|
+
end
|
104
|
+
|
31
105
|
def body
|
32
106
|
@body
|
33
107
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: reverb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Travis Herrick
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2015-
|
12
|
+
date: 2015-06-18 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: gems
|
@@ -31,14 +31,14 @@ dependencies:
|
|
31
31
|
requirements:
|
32
32
|
- - "~>"
|
33
33
|
- !ruby/object:Gem::Version
|
34
|
-
version: '4'
|
34
|
+
version: '4.1'
|
35
35
|
type: :development
|
36
36
|
prerelease: false
|
37
37
|
version_requirements: !ruby/object:Gem::Requirement
|
38
38
|
requirements:
|
39
39
|
- - "~>"
|
40
40
|
- !ruby/object:Gem::Version
|
41
|
-
version: '4'
|
41
|
+
version: '4.1'
|
42
42
|
- !ruby/object:Gem::Dependency
|
43
43
|
name: cane
|
44
44
|
requirement: !ruby/object:Gem::Requirement
|
@@ -107,6 +107,8 @@ extra_rdoc_files:
|
|
107
107
|
files:
|
108
108
|
- README.md
|
109
109
|
- lib/reverb.rb
|
110
|
+
- lib/reverb/configuration.rb
|
111
|
+
- lib/reverb/core.rb
|
110
112
|
- lib/reverb/factories.rb
|
111
113
|
- lib/reverb/factories/response.rb
|
112
114
|
- lib/reverb/response.rb
|