yake 0.1.3 → 0.2.2

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: e44a168d8c7df7b5e13dcf9da5e2ad452b1c19d07a3b03f0374dbf64473bf811
4
- data.tar.gz: 5d81f595d5c0eb228997bbf769ae93370ff74a45c01fb4499f4e151a0d22222c
3
+ metadata.gz: 7db6ede2c0a492849a3dc42c4f88e85ffa7c4d9569467ea3582a2b780e6f8552
4
+ data.tar.gz: a64d30572e18b07a3c1b50c0e76f96ca455620c1c5d7b7987a8f32d17f20a88c
5
5
  SHA512:
6
- metadata.gz: 714d996925867fd88267fcf13a563f99b53e313315717a96b8c427b1e7b72670590a0d23c3bf2d56820efb6df14cc4b47c4d0b14a75dde3db75feea66aeb151b
7
- data.tar.gz: a232aeff15dc133befd6e5782825b773a535a05f9653460b2dc622ffa1a7c7e5a2c41472c7834facc5457aa11c74df7b3d9d048ebb69f6a1a36428b7c123f8e4
6
+ metadata.gz: f74694e031b0b4436175454506c9f2ade6bcaa4d6480acfe5c7be7cb9f5fabb794dff0ec335b599196d90bdeabbe892f35204fcfe01094f4278b33307a499c80
7
+ data.tar.gz: 5608ca5d6de1e729753e6a67ab23fc155f607ef81ba57b0b860e1eda3b3152e082484432e3e4849bef266933c6af8c1ccd4dbbf20771a7272a637cf68335f3a0
data/README.md CHANGED
@@ -88,6 +88,17 @@ This feature can be disabled by adding a declaration in your handler file:
88
88
  logging :off
89
89
  ```
90
90
 
91
+ Include `Yake::Logger` on a class to access this logger:
92
+
93
+ ```ruby
94
+ class Fizz
95
+ include Yake::Logger
96
+ end
97
+
98
+ Fizz.new.logger == Yake.logger
99
+ # => true
100
+ ```
101
+
91
102
  #### API Routes
92
103
 
93
104
  A common use of Lambda functions is as a proxy for API Gateway. Oftentimes users will deploy a single Lambda function to handle all requests coming from API Gateway.
@@ -97,6 +108,10 @@ Requiring the `yake/api` module will add the API-specific DSL into your handler.
97
108
  Define API routes using Sinatra-like syntax
98
109
 
99
110
  ```ruby
111
+ any "/…" do |event|
112
+ # Handle 'ANY /…' route key events
113
+ end
114
+
100
115
  delete "/…" do |event|
101
116
  # Handle 'DELETE /…' route key events
102
117
  end
@@ -142,7 +157,7 @@ respond 200, { ok: true }.to_json, "x-extra-header" => "buzz"
142
157
  # {
143
158
  # "statusCode" => 200,
144
159
  # "body" => '{"ok":true}',
145
- # "headers" => { "x-extra-header" => "fizz" }
160
+ # "headers" => { "x-extra-header" => "buzz" }
146
161
  # }
147
162
  ```
148
163
 
data/lib/yake/api.rb CHANGED
@@ -11,7 +11,7 @@ module Yake
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
16
  method = event["routeKey"]
17
17
  raise Yake::Errors::UndeclaredRoute, method unless respond_to?(method)
@@ -26,7 +26,7 @@ module Yake
26
26
  end
27
27
 
28
28
  # Execute request
29
- send(method, event, context)
29
+ send(method, event, context).then { |res| block_given? ? yield(res) : res }
30
30
  end
31
31
 
32
32
  ##
@@ -55,6 +55,12 @@ module Yake
55
55
  (@headers ||= {}).update(headers)
56
56
  end
57
57
 
58
+ ##
59
+ # Define ANY route
60
+ def any(path, &block)
61
+ define_singleton_method("ANY #{ path }") { |*args| instance_exec(*args, &block) }
62
+ end
63
+
58
64
  ##
59
65
  # Define DELETE route
60
66
  def delete(path, &block)
data/lib/yake/dsl.rb CHANGED
@@ -10,17 +10,17 @@ module Yake
10
10
  # Lambda handler task wrapper
11
11
  def handler(name, &block)
12
12
  define_method(name) do |event:nil, context:nil|
13
- Yake.logger.nil? ? yield(event, context) : Yake.logger.wrap(event, context, &block)
13
+ Yake.wrap(event, context, &block)
14
14
  end
15
15
  end
16
16
 
17
17
  ##
18
18
  # Turn logging on/off
19
- def logging(switch, logdev = $stdout, **options)
19
+ def logging(switch, logger = nil)
20
20
  if switch == :on
21
- Yake.logger = Yake::Logger.new(logdev)
21
+ Yake.logger = logger
22
22
  elsif switch == :off
23
- Yake.logger = Yake::Logger.new(nil)
23
+ Yake.logger = ::Logger.new(nil)
24
24
  else
25
25
  raise Errors::UnknownLoggingSetting, switch
26
26
  end
@@ -29,4 +29,3 @@ module Yake
29
29
  end
30
30
 
31
31
  extend Yake::DSL
32
- Yake.logger = Yake::Logger.new
data/lib/yake/logger.rb CHANGED
@@ -4,33 +4,42 @@ require "json"
4
4
  require "logger"
5
5
 
6
6
  module Yake
7
- class Logger < ::Logger
8
- def initialize(logdev = $stdout, *)
9
- super
10
- @progname = "-"
11
- @formatter = LambdaFormatter.new
7
+ module Logger
8
+ attr_accessor :logger
9
+
10
+ def logger
11
+ @logger ||= Yake.logger
12
12
  end
13
13
 
14
- def wrap(event = nil, context = nil, &block)
15
- @progname = "RequestId: #{ context.aws_request_id }" if context.respond_to?(:aws_request_id)
16
- info("EVENT #{ event.to_json }")
17
- yield(event, context).tap { |res| info("RETURN #{ res.to_json }") }
18
- ensure
19
- @progname = "-"
14
+ class << self
15
+ def new(logdev = $stdout, **params)
16
+ ::Logger.new(logdev, formatter: Formatter.new, **params)
17
+ end
20
18
  end
21
- end
22
19
 
23
- class LambdaFormatter < ::Logger::Formatter
24
- Format = "%s %s %s\n"
20
+ class Formatter < ::Logger::Formatter
21
+ Format = "%s %s %s\n"
25
22
 
26
- def call(severity, time, progname, msg)
27
- Format % [ severity, progname, msg2str(msg).strip ]
23
+ def call(severity, time, progname, msg)
24
+ Format % [ severity, progname.nil? ? "-" : "RequestId: #{ progname }", msg2str(msg).strip ]
25
+ end
28
26
  end
29
27
  end
30
28
 
31
- module Loggable
29
+ class << self
32
30
  attr_accessor :logger
33
- end
34
31
 
35
- extend Loggable
32
+ def logger
33
+ @logger ||= Logger.new
34
+ end
35
+
36
+ def wrap(event = nil, context = nil, &block)
37
+ original_progname = logger.progname
38
+ logger.progname = context&.aws_request_id
39
+ logger.info("EVENT #{ event.to_json }")
40
+ yield(event, context).tap { |res| logger.info("RETURN #{ res.to_json }") }
41
+ ensure
42
+ logger.progname = original_progname
43
+ end
44
+ end
36
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.1.3"
4
+ VERSION = "0.2.2"
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.1.3
4
+ version: 0.2.2
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-04-29 00:00:00.000000000 Z
11
+ date: 2021-06-03 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description:
14
14
  email: