shark-on-lambda 1.0.0.rc1 → 1.0.0.rc2
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/changelog.md +1 -0
- data/gems.locked +1 -1
- data/lib/shark_on_lambda/configuration.rb +3 -1
- data/lib/shark_on_lambda/middleware/lambda_logger.rb +59 -0
- data/lib/shark_on_lambda/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: 404addc89268452b9ffbc6bb94ad7133dcac67f9df3f419abf0b673a5de20493
|
4
|
+
data.tar.gz: 328a87cf1a29c0e0322731ec83b94e4a0f029f87a8e37c1615062fc132da7b4d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7874706fa45ad80560518176e9a5ee6f6f61c0e139ec785f6ce90e8aeed04e023a8fa890c121ca93b53203d25589b0d6a8cefdc5eb82f590eb040010d4c13890
|
7
|
+
data.tar.gz: 70fb9f45d5ad2c92d6643c1d20bf5aa70ff1883233814604870b2993501b761df588e577aa119d5b089c573fa86220183d10f4b076bf5587b5b3be9fc0e82e3a
|
data/changelog.md
CHANGED
@@ -5,6 +5,7 @@
|
|
5
5
|
- [Break] HTTP redirection now uses the status code `302`.
|
6
6
|
- [Break] Remove the `ApiGateway` namespace, move all items from that namespace up by one level.
|
7
7
|
- [Break] Remove build rake tasks.
|
8
|
+
- [Added `SharkOnLambda::LambdaLogger`](https://www.pivotaltracker.com/story/show/169573932)
|
8
9
|
- Added support for Rack-compatible middleware.
|
9
10
|
- `SharkOnLambda::BaseController` now acts more like `ActionController::BaseController`.
|
10
11
|
- Support `ActiveModel::Errors` nested validation errors.
|
data/gems.locked
CHANGED
@@ -61,7 +61,9 @@ module SharkOnLambda
|
|
61
61
|
end
|
62
62
|
|
63
63
|
def middleware
|
64
|
-
@middleware ||= ActionDispatch::MiddlewareStack.new
|
64
|
+
@middleware ||= ActionDispatch::MiddlewareStack.new do |middleware_stack|
|
65
|
+
middleware_stack.use Middleware::LambdaLogger
|
66
|
+
end
|
65
67
|
end
|
66
68
|
|
67
69
|
def root
|
@@ -0,0 +1,59 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module SharkOnLambda
|
4
|
+
module Middleware
|
5
|
+
class LambdaLogger < Base
|
6
|
+
attr_reader :logger
|
7
|
+
|
8
|
+
def initialize(app, logger: SharkOnLambda.logger)
|
9
|
+
super(app)
|
10
|
+
@logger = logger
|
11
|
+
end
|
12
|
+
|
13
|
+
private
|
14
|
+
|
15
|
+
def _call(env)
|
16
|
+
start_time = Time.now
|
17
|
+
response = app.call(env)
|
18
|
+
end_time = Time.now
|
19
|
+
|
20
|
+
if logger.info?
|
21
|
+
log_request(env: env,
|
22
|
+
response: response,
|
23
|
+
start_time: start_time,
|
24
|
+
end_time: end_time)
|
25
|
+
end
|
26
|
+
|
27
|
+
response
|
28
|
+
end
|
29
|
+
|
30
|
+
def body_size(body)
|
31
|
+
size = 0
|
32
|
+
body.each { |chunk| size += chunk.bytesize }
|
33
|
+
size
|
34
|
+
end
|
35
|
+
|
36
|
+
def log_request(env:, response:, start_time:, end_time:)
|
37
|
+
log_object = {
|
38
|
+
url: env['PATH_INFO'],
|
39
|
+
method: env['REQUEST_METHOD'],
|
40
|
+
params: params(env),
|
41
|
+
status: response[0],
|
42
|
+
length: body_size(response[2]),
|
43
|
+
duration: "#{duration_in_ms(start_time, end_time)} ms"
|
44
|
+
}
|
45
|
+
logger.info log_object.to_json
|
46
|
+
end
|
47
|
+
|
48
|
+
def duration_in_ms(start_time, end_time)
|
49
|
+
duration = (end_time - start_time) * 1000
|
50
|
+
duration.abs.floor(3)
|
51
|
+
end
|
52
|
+
|
53
|
+
def params(env)
|
54
|
+
query_params = Rack::Utils.parse_nested_query(env['QUERY_STRING'])
|
55
|
+
query_params.merge(env['shark.path_parameters'] || {})
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: shark-on-lambda
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.0.
|
4
|
+
version: 1.0.0.rc2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Huy Dinh
|
@@ -280,6 +280,7 @@ files:
|
|
280
280
|
- lib/shark_on_lambda/jsonapi_renderer.rb
|
281
281
|
- lib/shark_on_lambda/middleware/base.rb
|
282
282
|
- lib/shark_on_lambda/middleware/jsonapi_rescuer.rb
|
283
|
+
- lib/shark_on_lambda/middleware/lambda_logger.rb
|
283
284
|
- lib/shark_on_lambda/middleware/rescuer.rb
|
284
285
|
- lib/shark_on_lambda/query.rb
|
285
286
|
- lib/shark_on_lambda/rack_adapters/api_gateway.rb
|