yake 0.1.3 → 0.2.2

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