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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9de95366ac135aebf072c6ecdbb5cae42b25f072bffdd1e01bee446e8262f17b
4
- data.tar.gz: a09d5288e281447de50cfbbd8f97a18c023d9750e5d5b5ab456f4d6187b229a6
3
+ metadata.gz: 404addc89268452b9ffbc6bb94ad7133dcac67f9df3f419abf0b673a5de20493
4
+ data.tar.gz: 328a87cf1a29c0e0322731ec83b94e4a0f029f87a8e37c1615062fc132da7b4d
5
5
  SHA512:
6
- metadata.gz: 9643f2cb448d20396f43ab9fd124e0aca1ae436773f1b29626ce44a644f12f6bd1477deb5c468a30b1992d824d1bf6049f8340705c11dde6a65432f1104bba38
7
- data.tar.gz: '09d2eb6a2ffb09b969f3cd383a0f9a19ee6bd68fbf32b37ba1fc0acab488144dcf38d516788b421b601158d390e4eee162500c65efcb25e89f979ac4bb487c21'
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
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- shark-on-lambda (1.0.0.rc1)
4
+ shark-on-lambda (1.0.0.rc2)
5
5
  actionpack
6
6
  activesupport
7
7
  jsonapi-rb
@@ -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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SharkOnLambda
4
- VERSION = '1.0.0.rc1'
4
+ VERSION = '1.0.0.rc2'
5
5
  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.rc1
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