shark-on-lambda 1.0.0.rc1 → 1.0.0.rc2

Sign up to get free protection for your applications and to get access to all the features.
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