lamby 2.6.0 → 2.7.1
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 +70 -50
- data/Dockerfile +0 -5
- data/Gemfile.lock +99 -96
- data/Rakefile +9 -1
- data/bin/_test +1 -0
- data/lib/lamby.rb +5 -0
- data/lib/lamby/config.rb +47 -0
- data/lib/lamby/handler.rb +25 -11
- data/lib/lamby/rack_alb.rb +1 -1
- data/lib/lamby/railtie.rb +0 -2
- data/lib/lamby/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 59b1550c254f18e60ca584d6387dbb859628593032b669a4c502cc9ab00058c9
|
|
4
|
+
data.tar.gz: 4e2cafe4ec8a56e951ff98100e347d98fc669559673047cc6e40ee316815a45b
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 406cc8edacadeb1dcb6a5be145699b5f27ca7c7c35ee766fb564cc9f2dc8cb00e26629922d7b4de23a9f04cd6f0410af29cfeb9b82c109f9fb441f919fe8eaae
|
|
7
|
+
data.tar.gz: 4e7fe89bb256588a6cf7effa5c6111286c99de8f20210359203d5c68b249f245fc7629fb520b67ee875adce8ed59994e82bcdcb4be33426385a97078ccbad872
|
data/CHANGELOG.md
CHANGED
|
@@ -1,73 +1,106 @@
|
|
|
1
1
|
<!-- -*- mode: markdown -*- -->
|
|
2
|
+
|
|
2
3
|
# Keep A Changelog!
|
|
3
4
|
|
|
4
5
|
See this http://keepachangelog.com link for information on how we want this documented formatted.
|
|
5
6
|
|
|
7
|
+
## v2.7.1
|
|
8
|
+
|
|
9
|
+
#### Removed
|
|
10
|
+
|
|
11
|
+
- Bootsnap setup convenience require.
|
|
12
|
+
|
|
13
|
+
## v2.7.0
|
|
14
|
+
|
|
15
|
+
#### Added
|
|
16
|
+
|
|
17
|
+
- Support EventBridge events in handler with default proc to log.
|
|
18
|
+
|
|
19
|
+
## v2.6.3
|
|
20
|
+
|
|
21
|
+
#### Added
|
|
22
|
+
|
|
23
|
+
- Bootsnap setup convenience require.
|
|
24
|
+
|
|
25
|
+
## v2.6.2
|
|
26
|
+
|
|
27
|
+
- Fixed Rack::Deflate usage with an ALB.
|
|
28
|
+
|
|
29
|
+
## v2.6.1
|
|
30
|
+
|
|
31
|
+
#### Fixed
|
|
32
|
+
|
|
33
|
+
- Support redirects with empty response body.
|
|
34
|
+
|
|
35
|
+
#### Added
|
|
36
|
+
|
|
37
|
+
- Tests for enabling Rack::Deflate middleware by passing RACK_DEFLATE_ENABLED env variable.
|
|
38
|
+
|
|
6
39
|
## v2.6.0
|
|
7
40
|
|
|
8
41
|
#### Fixed
|
|
9
42
|
|
|
10
|
-
|
|
43
|
+
- Support multiple Set-Cookie headers for all rest types.
|
|
11
44
|
|
|
12
45
|
## v2.5.3
|
|
13
46
|
|
|
14
47
|
#### Fixed
|
|
15
48
|
|
|
16
|
-
|
|
49
|
+
- Base64 encode response body if the rack response is gzip or brotli compressed.
|
|
17
50
|
|
|
18
51
|
## v2.5.2
|
|
19
52
|
|
|
20
|
-
|
|
53
|
+
- SSM file always overwrites. Fixes #65.
|
|
21
54
|
|
|
22
55
|
## v2.5.1
|
|
23
56
|
|
|
24
57
|
#### Fixed
|
|
25
58
|
|
|
26
|
-
|
|
59
|
+
- Quoting in describe-subnets #62 Thanks @atwoodjw
|
|
27
60
|
|
|
28
61
|
## v2.5.0
|
|
29
62
|
|
|
30
63
|
#### Changed
|
|
31
64
|
|
|
32
|
-
|
|
65
|
+
- Install files to favor containers.
|
|
33
66
|
|
|
34
67
|
## v2.2.2
|
|
35
68
|
|
|
36
69
|
#### Changed
|
|
37
70
|
|
|
38
|
-
|
|
71
|
+
- More ActiveSupport removal. Better ENV.to_h.
|
|
39
72
|
|
|
40
73
|
## v2.2.1
|
|
41
74
|
|
|
42
75
|
#### Changed
|
|
43
76
|
|
|
44
|
-
|
|
77
|
+
- More ActiveSupport removal from SsmParameterStore.
|
|
45
78
|
|
|
46
79
|
## v2.2.0
|
|
47
80
|
|
|
48
81
|
#### Changed
|
|
49
82
|
|
|
50
|
-
|
|
51
|
-
|
|
83
|
+
- Remove dependency on `activesupport` for rack-only applications.
|
|
84
|
+
- Remove ActiveSupport artifacts:
|
|
52
85
|
- Replace `strip_heredoc` with `<<~HEREDOC`.
|
|
53
86
|
- Remove instances of `Object#try`, replace with `&.`.
|
|
54
87
|
- Use `Rack::Utils.build_nested_query` in place of `Object#to_query`.
|
|
55
88
|
- Replace `Object#present?` with `to_s.empty?`.
|
|
56
89
|
- Replace `Array.wrap` with `Array[obj].compact.flatten`.
|
|
57
|
-
|
|
90
|
+
- Add a check against the `RAILS_ENV` AND `RACK_ENV` environment
|
|
58
91
|
variables prior to enabling debug mode.
|
|
59
92
|
|
|
60
93
|
## v2.1.0
|
|
61
94
|
|
|
62
95
|
#### Changed
|
|
63
96
|
|
|
64
|
-
|
|
97
|
+
- Only load the railtie if `Rails` is defined.
|
|
65
98
|
|
|
66
99
|
## v2.0.1
|
|
67
100
|
|
|
68
101
|
#### Changed
|
|
69
102
|
|
|
70
|
-
|
|
103
|
+
- Remove Rails runtime dep. Only rack is needed.
|
|
71
104
|
|
|
72
105
|
## v2.0.0
|
|
73
106
|
|
|
@@ -75,120 +108,107 @@ Support for new API Gateway HTTP APIs!!!
|
|
|
75
108
|
|
|
76
109
|
#### Changed
|
|
77
110
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
111
|
+
- The `Lamby.handler` must have a `:rack` option. One of `:http`, `:rest`, `:alb`.
|
|
112
|
+
- Renamed template generators to match options above.
|
|
113
|
+
- The `lamby:install` task now defaults to HTTP API.
|
|
114
|
+
- Changed the name of `:api` rack option to `:rest`.
|
|
115
|
+
- Removed `export` from Dotenv files. Better Docker compatability.
|
|
83
116
|
|
|
84
117
|
#### Added
|
|
85
118
|
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
119
|
+
- New rack handler for HTTP API v1 and v2.
|
|
120
|
+
- Lots of backfill tests for, ALBs & REST APIs.
|
|
89
121
|
|
|
90
122
|
## v1.0.3
|
|
91
123
|
|
|
92
124
|
#### Changed
|
|
93
125
|
|
|
94
|
-
|
|
95
|
-
|
|
126
|
+
- Change shebangs to `#!/usr/bin/env bash`
|
|
96
127
|
|
|
97
128
|
## v1.0.2
|
|
98
129
|
|
|
99
130
|
#### Changed
|
|
100
131
|
|
|
101
|
-
|
|
132
|
+
- Adds an optional 'overwrite' parameter to #to_env.
|
|
102
133
|
|
|
103
134
|
## v1.0.1
|
|
104
135
|
|
|
105
136
|
#### Changed
|
|
106
137
|
|
|
107
|
-
|
|
108
|
-
|
|
138
|
+
- Links in bin/build templates to point to lamby.custominktech.com site.
|
|
109
139
|
|
|
110
140
|
## v1.0.0
|
|
111
141
|
|
|
112
142
|
#### Fixed
|
|
113
143
|
|
|
114
|
-
|
|
115
|
-
|
|
144
|
+
- ALB query params & binary responses. Fixes #38.
|
|
116
145
|
|
|
117
146
|
## v0.6.0
|
|
118
147
|
|
|
119
148
|
#### Added
|
|
120
149
|
|
|
121
|
-
|
|
150
|
+
- APPLICATION LOAD BALANACER SUPPORT!!! The new default. Use `rack: :api` option to handler for API Gateway support.
|
|
122
151
|
|
|
123
152
|
#### Changed
|
|
124
153
|
|
|
125
|
-
|
|
126
|
-
|
|
154
|
+
- Rake task `lamby:install` now defaults to `application_load_balancer`
|
|
127
155
|
|
|
128
156
|
## v0.5.1
|
|
129
157
|
|
|
130
158
|
#### Fixed
|
|
131
159
|
|
|
132
|
-
|
|
133
|
-
|
|
160
|
+
- The .gitignore file template. Fix .aws-sam dir.
|
|
134
161
|
|
|
135
162
|
## v0.5.0
|
|
136
163
|
|
|
137
164
|
#### Added
|
|
138
165
|
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
166
|
+
- Template generators for first install. Ex: `./bin/rake -r lamby lamby:install:api_gateway`.
|
|
167
|
+
- New `Lamby::SsmParameterStore.get!` helper.
|
|
142
168
|
|
|
143
169
|
## v0.4.1
|
|
144
170
|
|
|
145
171
|
#### Fixed
|
|
146
172
|
|
|
147
|
-
|
|
148
|
-
|
|
173
|
+
- Fix type in v0.4.0 fix below.
|
|
149
174
|
|
|
150
175
|
## v0.4.0
|
|
151
176
|
|
|
152
177
|
#### Fixed
|
|
153
178
|
|
|
154
|
-
|
|
155
|
-
|
|
179
|
+
- File uploads in #33 using `CONTENT_TYPE` and `CONTENT_LENGTH`.
|
|
156
180
|
|
|
157
181
|
## v0.3.2
|
|
158
182
|
|
|
159
183
|
#### Added
|
|
160
184
|
|
|
161
|
-
|
|
162
|
-
|
|
185
|
+
- Pass Request ID for CloudWatch logs. Fixes #30.
|
|
163
186
|
|
|
164
187
|
## v0.3.1
|
|
165
188
|
|
|
166
189
|
#### Changed
|
|
167
190
|
|
|
168
|
-
|
|
169
|
-
|
|
191
|
+
- Docs and SAM template tweaks.
|
|
170
192
|
|
|
171
193
|
## v0.3.0
|
|
172
194
|
|
|
173
195
|
#### Added
|
|
174
196
|
|
|
175
|
-
|
|
176
|
-
|
|
197
|
+
- Secure configs rake task.
|
|
198
|
+
- Project bin setup and tests.
|
|
177
199
|
|
|
178
200
|
#### Changed
|
|
179
201
|
|
|
180
|
-
|
|
181
|
-
|
|
202
|
+
- SAM template tweaks.
|
|
182
203
|
|
|
183
204
|
## v0.2.0
|
|
184
205
|
|
|
185
206
|
#### Changed
|
|
186
207
|
|
|
187
|
-
|
|
188
|
-
|
|
208
|
+
- Simple docs and project re-organization.
|
|
189
209
|
|
|
190
210
|
## v0.1.0
|
|
191
211
|
|
|
192
212
|
#### Added
|
|
193
213
|
|
|
194
|
-
|
|
214
|
+
- New gem and placeholder in rubygems.
|
data/Dockerfile
CHANGED
|
@@ -1,10 +1,5 @@
|
|
|
1
1
|
FROM lambci/lambda:build-ruby2.7
|
|
2
2
|
|
|
3
|
-
# Lock down AWS SAM version.
|
|
4
|
-
RUN pip install awscli && \
|
|
5
|
-
pip uninstall --yes aws-sam-cli && \
|
|
6
|
-
pip install aws-sam-cli==0.45.0
|
|
7
|
-
|
|
8
3
|
# Asset Pipeline
|
|
9
4
|
RUN curl -sL https://rpm.nodesource.com/setup_12.x | bash - && \
|
|
10
5
|
yum install -y nodejs
|
data/Gemfile.lock
CHANGED
|
@@ -1,155 +1,158 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
lamby (2.
|
|
4
|
+
lamby (2.7.1)
|
|
5
5
|
rack
|
|
6
6
|
|
|
7
7
|
GEM
|
|
8
8
|
remote: https://rubygems.org/
|
|
9
9
|
specs:
|
|
10
|
-
actioncable (6.
|
|
11
|
-
actionpack (= 6.
|
|
10
|
+
actioncable (6.1.3.1)
|
|
11
|
+
actionpack (= 6.1.3.1)
|
|
12
|
+
activesupport (= 6.1.3.1)
|
|
12
13
|
nio4r (~> 2.0)
|
|
13
14
|
websocket-driver (>= 0.6.1)
|
|
14
|
-
actionmailbox (6.
|
|
15
|
-
actionpack (= 6.
|
|
16
|
-
activejob (= 6.
|
|
17
|
-
activerecord (= 6.
|
|
18
|
-
activestorage (= 6.
|
|
19
|
-
activesupport (= 6.
|
|
15
|
+
actionmailbox (6.1.3.1)
|
|
16
|
+
actionpack (= 6.1.3.1)
|
|
17
|
+
activejob (= 6.1.3.1)
|
|
18
|
+
activerecord (= 6.1.3.1)
|
|
19
|
+
activestorage (= 6.1.3.1)
|
|
20
|
+
activesupport (= 6.1.3.1)
|
|
20
21
|
mail (>= 2.7.1)
|
|
21
|
-
actionmailer (6.
|
|
22
|
-
actionpack (= 6.
|
|
23
|
-
actionview (= 6.
|
|
24
|
-
activejob (= 6.
|
|
22
|
+
actionmailer (6.1.3.1)
|
|
23
|
+
actionpack (= 6.1.3.1)
|
|
24
|
+
actionview (= 6.1.3.1)
|
|
25
|
+
activejob (= 6.1.3.1)
|
|
26
|
+
activesupport (= 6.1.3.1)
|
|
25
27
|
mail (~> 2.5, >= 2.5.4)
|
|
26
28
|
rails-dom-testing (~> 2.0)
|
|
27
|
-
actionpack (6.
|
|
28
|
-
actionview (= 6.
|
|
29
|
-
activesupport (= 6.
|
|
30
|
-
rack (~> 2.0, >= 2.0.
|
|
29
|
+
actionpack (6.1.3.1)
|
|
30
|
+
actionview (= 6.1.3.1)
|
|
31
|
+
activesupport (= 6.1.3.1)
|
|
32
|
+
rack (~> 2.0, >= 2.0.9)
|
|
31
33
|
rack-test (>= 0.6.3)
|
|
32
34
|
rails-dom-testing (~> 2.0)
|
|
33
35
|
rails-html-sanitizer (~> 1.0, >= 1.2.0)
|
|
34
|
-
actiontext (6.
|
|
35
|
-
actionpack (= 6.
|
|
36
|
-
activerecord (= 6.
|
|
37
|
-
activestorage (= 6.
|
|
38
|
-
activesupport (= 6.
|
|
36
|
+
actiontext (6.1.3.1)
|
|
37
|
+
actionpack (= 6.1.3.1)
|
|
38
|
+
activerecord (= 6.1.3.1)
|
|
39
|
+
activestorage (= 6.1.3.1)
|
|
40
|
+
activesupport (= 6.1.3.1)
|
|
39
41
|
nokogiri (>= 1.8.5)
|
|
40
|
-
actionview (6.
|
|
41
|
-
activesupport (= 6.
|
|
42
|
+
actionview (6.1.3.1)
|
|
43
|
+
activesupport (= 6.1.3.1)
|
|
42
44
|
builder (~> 3.1)
|
|
43
45
|
erubi (~> 1.4)
|
|
44
46
|
rails-dom-testing (~> 2.0)
|
|
45
47
|
rails-html-sanitizer (~> 1.1, >= 1.2.0)
|
|
46
|
-
activejob (6.
|
|
47
|
-
activesupport (= 6.
|
|
48
|
+
activejob (6.1.3.1)
|
|
49
|
+
activesupport (= 6.1.3.1)
|
|
48
50
|
globalid (>= 0.3.6)
|
|
49
|
-
activemodel (6.
|
|
50
|
-
activesupport (= 6.
|
|
51
|
-
activerecord (6.
|
|
52
|
-
activemodel (= 6.
|
|
53
|
-
activesupport (= 6.
|
|
54
|
-
activestorage (6.
|
|
55
|
-
actionpack (= 6.
|
|
56
|
-
activejob (= 6.
|
|
57
|
-
activerecord (= 6.
|
|
58
|
-
|
|
59
|
-
|
|
51
|
+
activemodel (6.1.3.1)
|
|
52
|
+
activesupport (= 6.1.3.1)
|
|
53
|
+
activerecord (6.1.3.1)
|
|
54
|
+
activemodel (= 6.1.3.1)
|
|
55
|
+
activesupport (= 6.1.3.1)
|
|
56
|
+
activestorage (6.1.3.1)
|
|
57
|
+
actionpack (= 6.1.3.1)
|
|
58
|
+
activejob (= 6.1.3.1)
|
|
59
|
+
activerecord (= 6.1.3.1)
|
|
60
|
+
activesupport (= 6.1.3.1)
|
|
61
|
+
marcel (~> 1.0.0)
|
|
62
|
+
mini_mime (~> 1.0.2)
|
|
63
|
+
activesupport (6.1.3.1)
|
|
60
64
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
|
61
|
-
i18n (>=
|
|
62
|
-
minitest (
|
|
63
|
-
tzinfo (~>
|
|
64
|
-
zeitwerk (~> 2.
|
|
65
|
-
aws-eventstream (1.
|
|
66
|
-
aws-partitions (1.
|
|
67
|
-
aws-sdk-core (3.
|
|
68
|
-
aws-eventstream (~> 1
|
|
65
|
+
i18n (>= 1.6, < 2)
|
|
66
|
+
minitest (>= 5.1)
|
|
67
|
+
tzinfo (~> 2.0)
|
|
68
|
+
zeitwerk (~> 2.3)
|
|
69
|
+
aws-eventstream (1.1.1)
|
|
70
|
+
aws-partitions (1.446.0)
|
|
71
|
+
aws-sdk-core (3.114.0)
|
|
72
|
+
aws-eventstream (~> 1, >= 1.0.2)
|
|
69
73
|
aws-partitions (~> 1, >= 1.239.0)
|
|
70
74
|
aws-sigv4 (~> 1.1)
|
|
71
75
|
jmespath (~> 1.0)
|
|
72
|
-
aws-sdk-ssm (1.
|
|
73
|
-
aws-sdk-core (~> 3, >= 3.
|
|
76
|
+
aws-sdk-ssm (1.108.0)
|
|
77
|
+
aws-sdk-core (~> 3, >= 3.112.0)
|
|
74
78
|
aws-sigv4 (~> 1.1)
|
|
75
|
-
aws-sigv4 (1.
|
|
76
|
-
aws-eventstream (~> 1
|
|
79
|
+
aws-sigv4 (1.2.3)
|
|
80
|
+
aws-eventstream (~> 1, >= 1.0.2)
|
|
77
81
|
builder (3.2.4)
|
|
78
|
-
coderay (1.1.
|
|
79
|
-
concurrent-ruby (1.1.
|
|
82
|
+
coderay (1.1.3)
|
|
83
|
+
concurrent-ruby (1.1.8)
|
|
80
84
|
crass (1.0.6)
|
|
81
|
-
erubi (1.
|
|
85
|
+
erubi (1.10.0)
|
|
82
86
|
globalid (0.4.2)
|
|
83
87
|
activesupport (>= 4.2.0)
|
|
84
|
-
i18n (1.8.
|
|
88
|
+
i18n (1.8.10)
|
|
85
89
|
concurrent-ruby (~> 1.0)
|
|
86
90
|
jmespath (1.4.0)
|
|
87
|
-
loofah (2.
|
|
91
|
+
loofah (2.9.1)
|
|
88
92
|
crass (~> 1.0.2)
|
|
89
93
|
nokogiri (>= 1.5.9)
|
|
90
94
|
mail (2.7.1)
|
|
91
95
|
mini_mime (>= 0.1.1)
|
|
92
|
-
marcel (0.
|
|
93
|
-
mimemagic (~> 0.3.2)
|
|
96
|
+
marcel (1.0.1)
|
|
94
97
|
method_source (1.0.0)
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
minitest (
|
|
99
|
-
minitest-focus (1.1.2)
|
|
98
|
+
mini_mime (1.0.3)
|
|
99
|
+
mini_portile2 (2.5.0)
|
|
100
|
+
minitest (5.14.4)
|
|
101
|
+
minitest-focus (1.2.1)
|
|
100
102
|
minitest (>= 4, < 6)
|
|
101
|
-
mocha (1.
|
|
102
|
-
nio4r (2.5.
|
|
103
|
-
nokogiri (1.
|
|
104
|
-
mini_portile2 (~> 2.
|
|
105
|
-
|
|
103
|
+
mocha (1.12.0)
|
|
104
|
+
nio4r (2.5.7)
|
|
105
|
+
nokogiri (1.11.3)
|
|
106
|
+
mini_portile2 (~> 2.5.0)
|
|
107
|
+
racc (~> 1.4)
|
|
108
|
+
pry (0.14.1)
|
|
106
109
|
coderay (~> 1.1)
|
|
107
110
|
method_source (~> 1.0)
|
|
108
|
-
|
|
111
|
+
racc (1.5.2)
|
|
112
|
+
rack (2.2.3)
|
|
109
113
|
rack-test (1.1.0)
|
|
110
114
|
rack (>= 1.0, < 3)
|
|
111
|
-
rails (6.
|
|
112
|
-
actioncable (= 6.
|
|
113
|
-
actionmailbox (= 6.
|
|
114
|
-
actionmailer (= 6.
|
|
115
|
-
actionpack (= 6.
|
|
116
|
-
actiontext (= 6.
|
|
117
|
-
actionview (= 6.
|
|
118
|
-
activejob (= 6.
|
|
119
|
-
activemodel (= 6.
|
|
120
|
-
activerecord (= 6.
|
|
121
|
-
activestorage (= 6.
|
|
122
|
-
activesupport (= 6.
|
|
123
|
-
bundler (>= 1.
|
|
124
|
-
railties (= 6.
|
|
115
|
+
rails (6.1.3.1)
|
|
116
|
+
actioncable (= 6.1.3.1)
|
|
117
|
+
actionmailbox (= 6.1.3.1)
|
|
118
|
+
actionmailer (= 6.1.3.1)
|
|
119
|
+
actionpack (= 6.1.3.1)
|
|
120
|
+
actiontext (= 6.1.3.1)
|
|
121
|
+
actionview (= 6.1.3.1)
|
|
122
|
+
activejob (= 6.1.3.1)
|
|
123
|
+
activemodel (= 6.1.3.1)
|
|
124
|
+
activerecord (= 6.1.3.1)
|
|
125
|
+
activestorage (= 6.1.3.1)
|
|
126
|
+
activesupport (= 6.1.3.1)
|
|
127
|
+
bundler (>= 1.15.0)
|
|
128
|
+
railties (= 6.1.3.1)
|
|
125
129
|
sprockets-rails (>= 2.0.0)
|
|
126
130
|
rails-dom-testing (2.0.3)
|
|
127
131
|
activesupport (>= 4.2.0)
|
|
128
132
|
nokogiri (>= 1.6)
|
|
129
133
|
rails-html-sanitizer (1.3.0)
|
|
130
134
|
loofah (~> 2.3)
|
|
131
|
-
railties (6.
|
|
132
|
-
actionpack (= 6.
|
|
133
|
-
activesupport (= 6.
|
|
135
|
+
railties (6.1.3.1)
|
|
136
|
+
actionpack (= 6.1.3.1)
|
|
137
|
+
activesupport (= 6.1.3.1)
|
|
134
138
|
method_source
|
|
135
139
|
rake (>= 0.8.7)
|
|
136
|
-
thor (
|
|
137
|
-
rake (13.0.
|
|
138
|
-
sprockets (4.0.
|
|
140
|
+
thor (~> 1.0)
|
|
141
|
+
rake (13.0.3)
|
|
142
|
+
sprockets (4.0.2)
|
|
139
143
|
concurrent-ruby (~> 1.0)
|
|
140
144
|
rack (> 1, < 3)
|
|
141
|
-
sprockets-rails (3.2.
|
|
145
|
+
sprockets-rails (3.2.2)
|
|
142
146
|
actionpack (>= 4.0)
|
|
143
147
|
activesupport (>= 4.0)
|
|
144
148
|
sprockets (>= 3.0.0)
|
|
145
|
-
thor (1.0
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
websocket-driver (0.7.1)
|
|
149
|
+
thor (1.1.0)
|
|
150
|
+
tzinfo (2.0.4)
|
|
151
|
+
concurrent-ruby (~> 1.0)
|
|
152
|
+
websocket-driver (0.7.3)
|
|
150
153
|
websocket-extensions (>= 0.1.0)
|
|
151
|
-
websocket-extensions (0.1.
|
|
152
|
-
zeitwerk (2.
|
|
154
|
+
websocket-extensions (0.1.5)
|
|
155
|
+
zeitwerk (2.4.2)
|
|
153
156
|
|
|
154
157
|
PLATFORMS
|
|
155
158
|
ruby
|
|
@@ -166,4 +169,4 @@ DEPENDENCIES
|
|
|
166
169
|
rake
|
|
167
170
|
|
|
168
171
|
BUNDLED WITH
|
|
169
|
-
2.2.
|
|
172
|
+
2.2.15
|
data/Rakefile
CHANGED
|
@@ -10,4 +10,12 @@ Rake::TestTask.new(:test) do |t|
|
|
|
10
10
|
t.warning = false
|
|
11
11
|
end
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
Rake::TestTask.new(:test_deflate) do |t|
|
|
14
|
+
t.libs << "test"
|
|
15
|
+
t.libs << "lib"
|
|
16
|
+
t.test_files = FileList["test/rack_deflate_test.rb"]
|
|
17
|
+
t.verbose = false
|
|
18
|
+
t.warning = false
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
task :default => [:test, :test_deflate]
|
data/bin/_test
CHANGED
data/lib/lamby.rb
CHANGED
|
@@ -2,6 +2,7 @@ require 'lamby/logger'
|
|
|
2
2
|
require 'rack'
|
|
3
3
|
require 'base64'
|
|
4
4
|
require 'lamby/version'
|
|
5
|
+
require 'lamby/config'
|
|
5
6
|
require 'lamby/sam_helpers'
|
|
6
7
|
require 'lamby/rack'
|
|
7
8
|
require 'lamby/rack_alb'
|
|
@@ -23,6 +24,10 @@ module Lamby
|
|
|
23
24
|
Handler.call(app, event, context, options)
|
|
24
25
|
end
|
|
25
26
|
|
|
27
|
+
def config
|
|
28
|
+
Lamby::Config.config
|
|
29
|
+
end
|
|
30
|
+
|
|
26
31
|
autoload :SsmParameterStore, 'lamby/ssm_parameter_store'
|
|
27
32
|
|
|
28
33
|
end
|
data/lib/lamby/config.rb
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
module Lamby
|
|
2
|
+
module Config
|
|
3
|
+
|
|
4
|
+
def configure
|
|
5
|
+
yield(config)
|
|
6
|
+
config
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def reconfigure
|
|
10
|
+
config.reconfigure { |c| yield(c) if block_given? }
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def config
|
|
14
|
+
@config ||= Configuration.new
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
extend self
|
|
18
|
+
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
class Configuration
|
|
22
|
+
|
|
23
|
+
def initialize
|
|
24
|
+
initialize_defaults
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def reconfigure
|
|
28
|
+
instance_variables.each { |var| instance_variable_set var, nil }
|
|
29
|
+
initialize_defaults
|
|
30
|
+
yield(self) if block_given?
|
|
31
|
+
self
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def initialize_defaults
|
|
35
|
+
@event_bridge_handler = lambda { |event, context| puts(event) }
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def event_bridge_handler
|
|
39
|
+
@event_bridge_handler
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def event_bridge_handler=(func)
|
|
43
|
+
@event_bridge_handler = func
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
end
|
|
47
|
+
end
|
data/lib/lamby/handler.rb
CHANGED
|
@@ -40,23 +40,23 @@ module Lamby
|
|
|
40
40
|
|
|
41
41
|
def body
|
|
42
42
|
@rbody ||= ''.tap do |rbody|
|
|
43
|
-
@body.each { |part| rbody << part }
|
|
43
|
+
@body.each { |part| rbody << part if part }
|
|
44
44
|
end
|
|
45
45
|
end
|
|
46
46
|
|
|
47
47
|
def call
|
|
48
48
|
return self if @called
|
|
49
49
|
@status, @headers, @body = call_app
|
|
50
|
-
set_cookies
|
|
50
|
+
set_cookies if rack?
|
|
51
51
|
@called = true
|
|
52
52
|
self
|
|
53
53
|
end
|
|
54
54
|
|
|
55
|
-
def base64_encodeable?
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
content_encoding_compressed? ||
|
|
59
|
-
|
|
55
|
+
def base64_encodeable?(hdrs = @headers)
|
|
56
|
+
hdrs && (
|
|
57
|
+
hdrs['Content-Transfer-Encoding'] == 'binary' ||
|
|
58
|
+
content_encoding_compressed?(hdrs) ||
|
|
59
|
+
hdrs['X-Lamby-Base64'] == '1'
|
|
60
60
|
)
|
|
61
61
|
end
|
|
62
62
|
|
|
@@ -78,20 +78,34 @@ module Lamby
|
|
|
78
78
|
end
|
|
79
79
|
|
|
80
80
|
def rack_response
|
|
81
|
-
rack.response(self)
|
|
81
|
+
rack? ? rack.response(self) : {}
|
|
82
82
|
end
|
|
83
83
|
|
|
84
84
|
def call_app
|
|
85
85
|
if Debug.on?(@event)
|
|
86
86
|
Debug.call @event, @context, rack.env
|
|
87
|
-
|
|
87
|
+
elsif rack?
|
|
88
88
|
@app.call rack.env
|
|
89
|
+
elsif event_bridge?
|
|
90
|
+
Lamby.config.event_bridge_handler.call @event, @context
|
|
91
|
+
[200, {}, StringIO.new('')]
|
|
92
|
+
else
|
|
93
|
+
[404, {}, StringIO.new('')]
|
|
89
94
|
end
|
|
90
95
|
end
|
|
91
96
|
|
|
92
|
-
def content_encoding_compressed?
|
|
93
|
-
content_encoding_header =
|
|
97
|
+
def content_encoding_compressed?(hdrs)
|
|
98
|
+
content_encoding_header = hdrs['Content-Encoding'] || ''
|
|
94
99
|
content_encoding_header.split(', ').any? { |h| ['br', 'gzip'].include?(h) }
|
|
95
100
|
end
|
|
101
|
+
|
|
102
|
+
def rack?
|
|
103
|
+
@event.key?('httpMethod') || @event.dig('requestContext', 'http')
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
def event_bridge?
|
|
107
|
+
Lamby.config.event_bridge_handler &&
|
|
108
|
+
@event.key?('source') && @event.key?('detail') && @event.key?('detail-type')
|
|
109
|
+
end
|
|
96
110
|
end
|
|
97
111
|
end
|
data/lib/lamby/rack_alb.rb
CHANGED
|
@@ -16,7 +16,7 @@ module Lamby
|
|
|
16
16
|
multivalue_headers['Set-Cookie'] = handler.set_cookies if handler.set_cookies
|
|
17
17
|
end
|
|
18
18
|
status_description = "#{handler.status} #{::Rack::Utils::HTTP_STATUS_CODES[handler.status]}"
|
|
19
|
-
base64_encode = hhdrs
|
|
19
|
+
base64_encode = handler.base64_encodeable?(hhdrs)
|
|
20
20
|
body = Base64.strict_encode64(handler.body) if base64_encode
|
|
21
21
|
{ multiValueHeaders: multivalue_headers,
|
|
22
22
|
statusDescription: status_description,
|
data/lib/lamby/railtie.rb
CHANGED
data/lib/lamby/version.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: 2.
|
|
4
|
+
version: 2.7.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Ken Collins
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2021-
|
|
11
|
+
date: 2021-05-04 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rack
|
|
@@ -150,6 +150,7 @@ files:
|
|
|
150
150
|
- docker-compose.yml
|
|
151
151
|
- lamby.gemspec
|
|
152
152
|
- lib/lamby.rb
|
|
153
|
+
- lib/lamby/config.rb
|
|
153
154
|
- lib/lamby/debug.rb
|
|
154
155
|
- lib/lamby/handler.rb
|
|
155
156
|
- lib/lamby/logger.rb
|