http_store 0.3.2 → 0.3.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/README.md +1 -1
- data/lib/http_store/helpers/requestable.rb +1 -1
- data/lib/http_store/helpers/storable.rb +13 -17
- data/lib/http_store/middleware/request_log.rb +44 -0
- data/lib/http_store/version.rb +1 -1
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7260e19010b3f1f15beb41344f4f724e93259b4f265331676392987f6f5f6117
|
4
|
+
data.tar.gz: 508395e3ccc1a935eec7d8b7b4cb7d17b37cae941ad74fd020cde4856fe411d9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 84c075dd32cfb36b0073cbde39fd604095d47a36bd45d46355b33d035f55b8f71ca949d413a9f0db04f853e7c332c89c6b9d5b16725d0c65d67af227c6e0054a
|
7
|
+
data.tar.gz: 696d1df0b628def8e953965ed4541ece093f96f2dae053b03388b8a247ea6206e96788da8983632213ccfe5879bd34eca445e2aaa61b3914ed7c7b5d6ba27e2c
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -82,7 +82,7 @@ Default use activerecord, you can to rewrite it by setting
|
|
82
82
|
|
83
83
|
### File storable
|
84
84
|
|
85
|
-
When request/response having a file(size limit 30_000), it will use `
|
85
|
+
When request/response having a file(size limit 30_000), it will use `storable(data)` to format to a hash, `{digest: '', origin: data[0..1000]'}`
|
86
86
|
|
87
87
|
## Development
|
88
88
|
|
@@ -16,32 +16,28 @@ module HttpStore
|
|
16
16
|
HttpStore.config.store_class.new(storable_meta).save
|
17
17
|
end
|
18
18
|
|
19
|
-
private
|
20
|
-
|
21
19
|
def storable_meta
|
22
20
|
@storable_meta ||= gen_storable_meta
|
23
21
|
end
|
24
22
|
|
25
23
|
def gen_storable_meta
|
26
24
|
@meta.slice(*HttpStore::STORE_KEYS).map do |k, v|
|
27
|
-
[k, v.is_a?(Hash) ?
|
25
|
+
[k, v.is_a?(Hash) || v.is_a?(Array) ? storable(v).to_json[0..STRING_LIMIT_SIZE] : v]
|
28
26
|
end.to_h
|
29
27
|
end
|
30
28
|
|
31
|
-
def
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
]
|
44
|
-
end.to_h
|
29
|
+
def storable(value)
|
30
|
+
case value
|
31
|
+
when Hash
|
32
|
+
value.map { |k, v| [k, storable(v)] }.to_h
|
33
|
+
when Array
|
34
|
+
value.map { |v| storable(v) }
|
35
|
+
when String
|
36
|
+
json = JSON.parse(v) rescue nil
|
37
|
+
json ? storable(json) : storable_string(v)
|
38
|
+
else
|
39
|
+
v.try(:to_h) || v.try(:to_a) || v
|
40
|
+
end
|
45
41
|
end
|
46
42
|
|
47
43
|
def storable_string(str)
|
@@ -0,0 +1,44 @@
|
|
1
|
+
module HttpStore
|
2
|
+
module Middleware
|
3
|
+
class RequestLog
|
4
|
+
include HttpStore::Helpers::Storable
|
5
|
+
|
6
|
+
STRING_LIMIT_SIZE = 30_000
|
7
|
+
|
8
|
+
def initialize(app)
|
9
|
+
@app = app
|
10
|
+
end
|
11
|
+
|
12
|
+
def call(env)
|
13
|
+
status, headers, body = @app.call(env)
|
14
|
+
[status, headers, body]
|
15
|
+
ensure
|
16
|
+
build_meta(env, status, headers, body)
|
17
|
+
store_request
|
18
|
+
end
|
19
|
+
|
20
|
+
def build_meta(env, status, headers, body)
|
21
|
+
request = ActionDispatch::Request.new(env)
|
22
|
+
|
23
|
+
@meta = format_req(request)
|
24
|
+
@meta.merge!(format_rsp(status, headers, body))
|
25
|
+
end
|
26
|
+
|
27
|
+
def format_req(request)
|
28
|
+
{
|
29
|
+
data: request.params,
|
30
|
+
headers: request.headers.select { |k, _v| k.start_with? 'HTTP_' }.to_h,
|
31
|
+
query_params: request.query_parameters
|
32
|
+
}
|
33
|
+
end
|
34
|
+
|
35
|
+
def format_rsp(status, headers, body)
|
36
|
+
{
|
37
|
+
status_code: status,
|
38
|
+
response_headers: headers,
|
39
|
+
response: body.try(:body) || body
|
40
|
+
}
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
data/lib/http_store/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: http_store
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- black
|
@@ -162,6 +162,7 @@ files:
|
|
162
162
|
- lib/http_store/helpers/responseable.rb
|
163
163
|
- lib/http_store/helpers/storable.rb
|
164
164
|
- lib/http_store/http_log.rb
|
165
|
+
- lib/http_store/middleware/request_log.rb
|
165
166
|
- lib/http_store/version.rb
|
166
167
|
homepage: https://github.com/308820773/http-store
|
167
168
|
licenses: []
|