lamby 4.1.1 → 4.2.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/CHANGELOG.md +6 -0
- data/Gemfile.lock +3 -1
- data/README.md +3 -1
- data/Rakefile +7 -1
- data/lamby.gemspec +1 -0
- data/lib/lamby/proxy_context.rb +25 -0
- data/lib/lamby/proxy_server.rb +36 -0
- data/lib/lamby/railtie.rb +4 -0
- data/lib/lamby/tasks.rake +8 -0
- data/lib/lamby/version.rb +1 -1
- data/lib/lamby.rb +2 -0
- metadata +20 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5e14871823a1771774b2ad8abae4ee766caac88ff51acb308cacc8a178d41da4
|
4
|
+
data.tar.gz: 36178b6813cf8487f685ba4e5a74c7a983e2dd06db2d0d224023d7c64cc227e0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 595d816933f71ed9003ae3261f61f2b52cee61c9791a19b054b9be81841eb3e3f541e60ce798911b91380fe812656b90611963d6b0386dfd9c6239952149c6e9
|
7
|
+
data.tar.gz: 3117f4172652685565693597fbe7cf7f1ba25cf85c34d04db679f057c5b3bbf4111d830b9f6e63db6ea47ff1c9d9b7fa6cd2ef8e05b89da62e60547f5591d81d
|
data/CHANGELOG.md
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
lamby (4.
|
4
|
+
lamby (4.2.0)
|
5
5
|
rack
|
6
6
|
|
7
7
|
GEM
|
@@ -170,6 +170,7 @@ GEM
|
|
170
170
|
timeout (0.3.2)
|
171
171
|
tzinfo (2.0.6)
|
172
172
|
concurrent-ruby (~> 1.0)
|
173
|
+
webrick (1.8.1)
|
173
174
|
websocket-driver (0.7.5)
|
174
175
|
websocket-extensions (>= 0.1.0)
|
175
176
|
websocket-extensions (0.1.5)
|
@@ -189,6 +190,7 @@ DEPENDENCIES
|
|
189
190
|
pry
|
190
191
|
rails
|
191
192
|
rake
|
193
|
+
webrick
|
192
194
|
|
193
195
|
BUNDLED WITH
|
194
196
|
2.3.26
|
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Lamby [](https://github.com/rails-lambda/lamby/actions)
|
1
|
+
# Lamby [](https://github.com/rails-lambda/lamby/actions)
|
2
2
|
|
3
3
|
<h2>Simple Rails & AWS Lambda Integration using Rack</h2>
|
4
4
|
<a href="https://lamby.cloud"><img src="https://raw.githubusercontent.com/rails-lambda/lamby/master/images/social2.png" alt="Lamby: Simple Rails & AWS Lambda Integration using Rack." align="right" width="450" style="margin-left:1rem;margin-bottom:1rem;" /></a>
|
@@ -17,6 +17,8 @@ https://lamby.cloud/docs/anatomy
|
|
17
17
|
|
18
18
|
## Contributing
|
19
19
|
|
20
|
+
[](https://codespaces.new/rails-lambda/lamby)
|
21
|
+
|
20
22
|
This project is built for [GitHub Codespaces](https://github.com/features/codespaces) using the [Development Container](https://containers.dev) specification. Once you have the repo cloned and setup with a dev container using either Codespaces or [VS Code](#using-vs-code), run the following commands. This will install packages and run tests.
|
21
23
|
|
22
24
|
```shell
|
data/Rakefile
CHANGED
@@ -5,7 +5,13 @@ require "rake/testtask"
|
|
5
5
|
Rake::TestTask.new(:test) do |t|
|
6
6
|
t.libs << "test"
|
7
7
|
t.libs << "lib"
|
8
|
-
t.test_files =
|
8
|
+
t.test_files = begin
|
9
|
+
if ENV['TEST_FILE']
|
10
|
+
[ENV['TEST_FILE']]
|
11
|
+
else
|
12
|
+
FileList["test/**/*_test.rb"]
|
13
|
+
end
|
14
|
+
end
|
9
15
|
t.verbose = false
|
10
16
|
t.warning = false
|
11
17
|
end
|
data/lamby.gemspec
CHANGED
@@ -0,0 +1,25 @@
|
|
1
|
+
module Lamby
|
2
|
+
# This class is used by the `lamby:proxy_server` Rake task to run a
|
3
|
+
# Rack server for local development proxy. Specifically, this class
|
4
|
+
# accepts a JSON respresentation of a Lambda context object converted
|
5
|
+
# to a Hash as the single arugment.
|
6
|
+
#
|
7
|
+
class ProxyContext
|
8
|
+
def initialize(data)
|
9
|
+
@data = data
|
10
|
+
end
|
11
|
+
|
12
|
+
def method_missing(method_name, *args, &block)
|
13
|
+
key = method_name.to_s
|
14
|
+
if @data.key?(key)
|
15
|
+
@data[key]
|
16
|
+
else
|
17
|
+
super
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def respond_to_missing?(method_name, include_private = false)
|
22
|
+
@data.key?(method_name.to_s) || super
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
module Lamby
|
2
|
+
class ProxyServer
|
3
|
+
|
4
|
+
METHOD_NOT_ALLOWED = <<-HEREDOC.strip
|
5
|
+
<h1>Method Not Allowed</h1>
|
6
|
+
<p>Please POST to this endpoint with an application/json content type and JSON payload of your Lambda's event and context.<p>
|
7
|
+
<p>Example: <code>{ "event": event, "context": context }</code></p>
|
8
|
+
HEREDOC
|
9
|
+
|
10
|
+
def call(env)
|
11
|
+
return method_not_allowed unless method_allowed?(env)
|
12
|
+
event, context = event_and_context(env)
|
13
|
+
lambda_to_rack Lamby.cmd(event: event, context: context)
|
14
|
+
end
|
15
|
+
|
16
|
+
private
|
17
|
+
|
18
|
+
def event_and_context(env)
|
19
|
+
data = env['rack.input'].dup.read
|
20
|
+
json = JSON.parse(data)
|
21
|
+
[ json['event'], Lamby::ProxyContext.new(json['context']) ]
|
22
|
+
end
|
23
|
+
|
24
|
+
def method_allowed?(env)
|
25
|
+
env['REQUEST_METHOD'] == 'POST' && env['CONTENT_TYPE'] == 'application/json'
|
26
|
+
end
|
27
|
+
|
28
|
+
def method_not_allowed
|
29
|
+
[405, {"Content-Type" => "text/html"}, [ METHOD_NOT_ALLOWED.dup ]]
|
30
|
+
end
|
31
|
+
|
32
|
+
def lambda_to_rack(response)
|
33
|
+
[ 200, {"Content-Type" => "application/json"}, [ response.to_json ] ]
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
data/lib/lamby/railtie.rb
CHANGED
data/lib/lamby/version.rb
CHANGED
data/lib/lamby.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lamby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.
|
4
|
+
version: 4.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ken Collins
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-05-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rack
|
@@ -122,6 +122,20 @@ dependencies:
|
|
122
122
|
- - ">="
|
123
123
|
- !ruby/object:Gem::Version
|
124
124
|
version: '0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: webrick
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ">="
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ">="
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
125
139
|
description: Simple Rails & AWS Lambda Integration using Rack and various utilities.
|
126
140
|
email:
|
127
141
|
- ken@metaskills.net
|
@@ -153,6 +167,8 @@ files:
|
|
153
167
|
- lib/lamby/debug.rb
|
154
168
|
- lib/lamby/handler.rb
|
155
169
|
- lib/lamby/logger.rb
|
170
|
+
- lib/lamby/proxy_context.rb
|
171
|
+
- lib/lamby/proxy_server.rb
|
156
172
|
- lib/lamby/rack.rb
|
157
173
|
- lib/lamby/rack_alb.rb
|
158
174
|
- lib/lamby/rack_http.rb
|
@@ -160,6 +176,7 @@ files:
|
|
160
176
|
- lib/lamby/railtie.rb
|
161
177
|
- lib/lamby/runner.rb
|
162
178
|
- lib/lamby/ssm_parameter_store.rb
|
179
|
+
- lib/lamby/tasks.rake
|
163
180
|
- lib/lamby/version.rb
|
164
181
|
- vendor/.keep
|
165
182
|
homepage: https://github.com/rails-lambda/lamby
|
@@ -181,7 +198,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
181
198
|
- !ruby/object:Gem::Version
|
182
199
|
version: '0'
|
183
200
|
requirements: []
|
184
|
-
rubygems_version: 3.
|
201
|
+
rubygems_version: 3.3.26
|
185
202
|
signing_key:
|
186
203
|
specification_version: 4
|
187
204
|
summary: Simple Rails & AWS Lambda Integration using Rack
|