yake 0.2.0 → 0.4.0
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 +4 -0
- data/lib/yake/api.rb +14 -13
- data/lib/yake/datadog.rb +24 -0
- data/lib/yake/dsl.rb +8 -2
- data/lib/yake/errors.rb +2 -0
- data/lib/yake/logger.rb +8 -7
- data/lib/yake/version.rb +1 -1
- metadata +4 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: d61ebfe7c8e0e2f9446a021e541ab35d08f28edd280ccd157871681782c29f00
|
|
4
|
+
data.tar.gz: f33daed6bda622626465054cb2367772fa1da1d0c5c7b0e6c97d1e358dff68ca
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 8c588738b06ebb6e4e0a338c7537116cdfaf8c925ca0b6b82c66acc579f66723d26bd31d11fe850bb22eb401dd9b71f23544e8de3b6e1ae9cafe02e8ac4a074b
|
|
7
|
+
data.tar.gz: 66e6267f694f5ee26a02b270d1c1cbe376bb2cb39cd11dcee80cd7bfafe03e2ae0d568fe9de6c2525213a07fae1ed122296b48ffbf9a4c8fe90cce12d867ca87
|
data/README.md
CHANGED
|
@@ -108,6 +108,10 @@ Requiring the `yake/api` module will add the API-specific DSL into your handler.
|
|
|
108
108
|
Define API routes using Sinatra-like syntax
|
|
109
109
|
|
|
110
110
|
```ruby
|
|
111
|
+
any "/…" do |event|
|
|
112
|
+
# Handle 'ANY /…' route key events
|
|
113
|
+
end
|
|
114
|
+
|
|
111
115
|
delete "/…" do |event|
|
|
112
116
|
# Handle 'DELETE /…' route key events
|
|
113
117
|
end
|
data/lib/yake/api.rb
CHANGED
|
@@ -1,32 +1,33 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require
|
|
4
|
-
require
|
|
3
|
+
require 'base64'
|
|
4
|
+
require 'json'
|
|
5
5
|
|
|
6
|
-
require
|
|
7
|
-
require_relative
|
|
6
|
+
require 'yake'
|
|
7
|
+
require_relative 'errors'
|
|
8
8
|
|
|
9
9
|
module Yake
|
|
10
10
|
module API
|
|
11
11
|
module DSL
|
|
12
12
|
##
|
|
13
13
|
# Proxy handler for HTTP requests from Slack
|
|
14
|
-
def route(event, context = nil)
|
|
14
|
+
def route(event, context = nil, &block)
|
|
15
15
|
# Extract route method
|
|
16
|
-
method = event[
|
|
16
|
+
method = event['routeKey']
|
|
17
17
|
raise Yake::Errors::UndeclaredRoute, method unless respond_to?(method)
|
|
18
18
|
|
|
19
19
|
# Normalize headers
|
|
20
|
-
event[
|
|
20
|
+
event['headers']&.transform_keys!(&:downcase)
|
|
21
21
|
|
|
22
22
|
# Decode body if Base64-encoded
|
|
23
|
-
if event[
|
|
24
|
-
body = Base64.strict_decode64(event[
|
|
25
|
-
event.update(
|
|
23
|
+
if event['isBase64Encoded']
|
|
24
|
+
body = Base64.strict_decode64(event['body'])
|
|
25
|
+
event.update('body' => body, 'isBase64Encoded' => false)
|
|
26
26
|
end
|
|
27
27
|
|
|
28
28
|
# Execute request
|
|
29
|
-
send(method, event, context)
|
|
29
|
+
res = send(method, event, context)
|
|
30
|
+
block_given? ? yield(res) : res
|
|
30
31
|
end
|
|
31
32
|
|
|
32
33
|
##
|
|
@@ -37,10 +38,10 @@ module Yake
|
|
|
37
38
|
Yake.logger&.send(status_code.to_i >= 400 ? :error : :info, log)
|
|
38
39
|
|
|
39
40
|
# Set headers
|
|
40
|
-
content_length = (body&.
|
|
41
|
+
content_length = (body&.bytesize || 0).to_s
|
|
41
42
|
to_s_downcase = -> (key) { key.to_s.downcase }
|
|
42
43
|
headers = {
|
|
43
|
-
|
|
44
|
+
'content-length' => content_length,
|
|
44
45
|
**(@headers || {}),
|
|
45
46
|
**headers,
|
|
46
47
|
}.transform_keys(&to_s_downcase).compact
|
data/lib/yake/datadog.rb
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'datadog/lambda'
|
|
4
|
+
require 'yake'
|
|
5
|
+
|
|
6
|
+
module Yake
|
|
7
|
+
module Datadog
|
|
8
|
+
module DSL
|
|
9
|
+
include Yake::DSL
|
|
10
|
+
|
|
11
|
+
##
|
|
12
|
+
# Datadog handler wrapper
|
|
13
|
+
def datadog(name, &block)
|
|
14
|
+
define_method(name) do |event:nil, context:nil|
|
|
15
|
+
::Datadog::Lambda.wrap(event, context) do
|
|
16
|
+
Yake.wrap(event, context, &block)
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
extend Yake::Datadog::DSL
|
data/lib/yake/dsl.rb
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require
|
|
3
|
+
require 'json'
|
|
4
4
|
|
|
5
|
-
require_relative
|
|
5
|
+
require_relative 'logger'
|
|
6
6
|
|
|
7
7
|
module Yake
|
|
8
8
|
module DSL
|
|
@@ -14,6 +14,12 @@ module Yake
|
|
|
14
14
|
end
|
|
15
15
|
end
|
|
16
16
|
|
|
17
|
+
##
|
|
18
|
+
# Helper to get logger
|
|
19
|
+
def logger
|
|
20
|
+
Yake.logger
|
|
21
|
+
end
|
|
22
|
+
|
|
17
23
|
##
|
|
18
24
|
# Turn logging on/off
|
|
19
25
|
def logging(switch, logger = nil)
|
data/lib/yake/errors.rb
CHANGED
data/lib/yake/logger.rb
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require
|
|
4
|
-
require
|
|
3
|
+
require 'json'
|
|
4
|
+
require 'logger'
|
|
5
5
|
|
|
6
6
|
module Yake
|
|
7
7
|
module Logger
|
|
@@ -12,8 +12,8 @@ module Yake
|
|
|
12
12
|
end
|
|
13
13
|
|
|
14
14
|
class << self
|
|
15
|
-
def new(logdev = $stdout)
|
|
16
|
-
::Logger.new(logdev,
|
|
15
|
+
def new(logdev = $stdout, **params)
|
|
16
|
+
::Logger.new(logdev, formatter: Formatter.new, **params)
|
|
17
17
|
end
|
|
18
18
|
end
|
|
19
19
|
|
|
@@ -21,7 +21,7 @@ module Yake
|
|
|
21
21
|
Format = "%s %s %s\n"
|
|
22
22
|
|
|
23
23
|
def call(severity, time, progname, msg)
|
|
24
|
-
Format % [ severity, progname, msg2str(msg).strip ]
|
|
24
|
+
Format % [ severity, progname.nil? ? '-' : "RequestId: #{ progname }", msg2str(msg).strip ]
|
|
25
25
|
end
|
|
26
26
|
end
|
|
27
27
|
end
|
|
@@ -34,11 +34,12 @@ module Yake
|
|
|
34
34
|
end
|
|
35
35
|
|
|
36
36
|
def wrap(event = nil, context = nil, &block)
|
|
37
|
-
|
|
37
|
+
original_progname = logger.progname
|
|
38
|
+
logger.progname = context&.aws_request_id
|
|
38
39
|
logger.info("EVENT #{ event.to_json }")
|
|
39
40
|
yield(event, context).tap { |res| logger.info("RETURN #{ res.to_json }") }
|
|
40
41
|
ensure
|
|
41
|
-
logger.progname =
|
|
42
|
+
logger.progname = original_progname
|
|
42
43
|
end
|
|
43
44
|
end
|
|
44
45
|
end
|
data/lib/yake/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: yake
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.4.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Alexander Mancevice
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2021-
|
|
11
|
+
date: 2021-10-14 00:00:00.000000000 Z
|
|
12
12
|
dependencies: []
|
|
13
13
|
description:
|
|
14
14
|
email:
|
|
@@ -22,6 +22,7 @@ files:
|
|
|
22
22
|
- README.md
|
|
23
23
|
- lib/yake.rb
|
|
24
24
|
- lib/yake/api.rb
|
|
25
|
+
- lib/yake/datadog.rb
|
|
25
26
|
- lib/yake/dsl.rb
|
|
26
27
|
- lib/yake/errors.rb
|
|
27
28
|
- lib/yake/logger.rb
|
|
@@ -45,7 +46,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
45
46
|
- !ruby/object:Gem::Version
|
|
46
47
|
version: '0'
|
|
47
48
|
requirements: []
|
|
48
|
-
rubygems_version: 3.
|
|
49
|
+
rubygems_version: 3.2.22
|
|
49
50
|
signing_key:
|
|
50
51
|
specification_version: 4
|
|
51
52
|
summary: Rake-like DSL for declaring AWS Lambda function handlers
|