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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2be2a80d8b7737cf954f33faef88eb7054ce7b0bbb516f8a216f3b6ec0b5578c
4
- data.tar.gz: 69e7b3323594c0f2d794674dc938104ecf1f2d37ccbd4818272aefb6ab4345f7
3
+ metadata.gz: d61ebfe7c8e0e2f9446a021e541ab35d08f28edd280ccd157871681782c29f00
4
+ data.tar.gz: f33daed6bda622626465054cb2367772fa1da1d0c5c7b0e6c97d1e358dff68ca
5
5
  SHA512:
6
- metadata.gz: 206fdff33a178be14611721811bf5d3177b7e5b3bc7bf09237844aeac2a93e74b7b88281675a169fe41333dfaa9d40eb8bfb4aab3cac20ee762c3fa4d419c5d0
7
- data.tar.gz: cc3a7a75a4f467028acc9bc892681067fbe86f4be6ed7cfe120deadfd34100f2da648f013d6ac81021fade9bcf0342ba576b6fa61a520cbc0724022aadae0aba
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 "base64"
4
- require "json"
3
+ require 'base64'
4
+ require 'json'
5
5
 
6
- require "yake"
7
- require_relative "errors"
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["routeKey"]
16
+ method = event['routeKey']
17
17
  raise Yake::Errors::UndeclaredRoute, method unless respond_to?(method)
18
18
 
19
19
  # Normalize headers
20
- event["headers"]&.transform_keys!(&:downcase)
20
+ event['headers']&.transform_keys!(&:downcase)
21
21
 
22
22
  # Decode body if Base64-encoded
23
- if event["isBase64Encoded"]
24
- body = Base64.strict_decode64(event["body"])
25
- event.update("body" => body, "isBase64Encoded" => false)
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&.length || 0).to_s
41
+ content_length = (body&.bytesize || 0).to_s
41
42
  to_s_downcase = -> (key) { key.to_s.downcase }
42
43
  headers = {
43
- "content-length" => content_length,
44
+ 'content-length' => content_length,
44
45
  **(@headers || {}),
45
46
  **headers,
46
47
  }.transform_keys(&to_s_downcase).compact
@@ -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 "json"
3
+ require 'json'
4
4
 
5
- require_relative "logger"
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
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Yake
2
4
  module Errors
3
5
  class Error < StandardError; end
data/lib/yake/logger.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "json"
4
- require "logger"
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, progname: "-", formatter: Formatter.new)
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
- logger.progname = "RequestId: #{ context.aws_request_id }" if context.respond_to?(:aws_request_id)
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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Yake
4
- VERSION = "0.2.0"
4
+ VERSION = '0.4.0'
5
5
  end
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.2.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-05-14 00:00:00.000000000 Z
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.1.6
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