yake 0.2.0 → 0.4.0

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: 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