linzer 0.7.0.beta2 → 0.7.0.beta4
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 +10 -0
- data/README.md +186 -36
- data/lib/linzer/http/bootstrap.rb +21 -0
- data/lib/linzer/http/signature_feature.rb +53 -0
- data/lib/linzer/http.rb +100 -0
- data/lib/linzer/message/adapter/abstract.rb +152 -0
- data/lib/linzer/message/adapter/http_gem/request.rb +22 -0
- data/lib/linzer/message/adapter/http_gem/response.rb +35 -0
- data/lib/linzer/message/adapter/net_http/request.rb +57 -0
- data/lib/linzer/message/adapter/net_http/response.rb +34 -0
- data/lib/linzer/message/adapter/rack/common.rb +106 -0
- data/lib/linzer/message/adapter/rack/request.rb +30 -0
- data/lib/linzer/message/adapter/rack/response.rb +31 -0
- data/lib/linzer/message/adapter.rb +8 -0
- data/lib/linzer/message/wrapper.rb +52 -0
- data/lib/linzer/message.rb +13 -192
- data/lib/linzer/options.rb +9 -0
- data/lib/linzer/signature.rb +7 -1
- data/lib/linzer/version.rb +1 -1
- data/lib/linzer.rb +27 -7
- data/lib/rack/auth/signature/helpers.rb +2 -0
- data/lib/rack/auth/signature.rb +2 -0
- metadata +64 -4
- data/lib/linzer/request.rb +0 -95
- data/lib/linzer/response.rb +0 -9
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: linzer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.7.0.
|
4
|
+
version: 0.7.0.beta4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Miguel Landaeta
|
@@ -123,6 +123,54 @@ dependencies:
|
|
123
123
|
- - ">="
|
124
124
|
- !ruby/object:Gem::Version
|
125
125
|
version: 1.7.0
|
126
|
+
- !ruby/object:Gem::Dependency
|
127
|
+
name: forwardable
|
128
|
+
requirement: !ruby/object:Gem::Requirement
|
129
|
+
requirements:
|
130
|
+
- - "~>"
|
131
|
+
- !ruby/object:Gem::Version
|
132
|
+
version: '1.3'
|
133
|
+
- - ">="
|
134
|
+
- !ruby/object:Gem::Version
|
135
|
+
version: 1.3.3
|
136
|
+
type: :runtime
|
137
|
+
prerelease: false
|
138
|
+
version_requirements: !ruby/object:Gem::Requirement
|
139
|
+
requirements:
|
140
|
+
- - "~>"
|
141
|
+
- !ruby/object:Gem::Version
|
142
|
+
version: '1.3'
|
143
|
+
- - ">="
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: 1.3.3
|
146
|
+
- !ruby/object:Gem::Dependency
|
147
|
+
name: net-http
|
148
|
+
requirement: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - "~>"
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: 0.6.0
|
153
|
+
type: :runtime
|
154
|
+
prerelease: false
|
155
|
+
version_requirements: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - "~>"
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: 0.6.0
|
160
|
+
- !ruby/object:Gem::Dependency
|
161
|
+
name: cgi
|
162
|
+
requirement: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - "~>"
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: 0.4.2
|
167
|
+
type: :runtime
|
168
|
+
prerelease: false
|
169
|
+
version_requirements: !ruby/object:Gem::Requirement
|
170
|
+
requirements:
|
171
|
+
- - "~>"
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: 0.4.2
|
126
174
|
email:
|
127
175
|
- miguel@miguel.cc
|
128
176
|
executables: []
|
@@ -145,11 +193,23 @@ files:
|
|
145
193
|
- lib/linzer/ecdsa.rb
|
146
194
|
- lib/linzer/ed25519.rb
|
147
195
|
- lib/linzer/hmac.rb
|
196
|
+
- lib/linzer/http.rb
|
197
|
+
- lib/linzer/http/bootstrap.rb
|
198
|
+
- lib/linzer/http/signature_feature.rb
|
148
199
|
- lib/linzer/key.rb
|
149
200
|
- lib/linzer/key/helper.rb
|
150
201
|
- lib/linzer/message.rb
|
151
|
-
- lib/linzer/
|
152
|
-
- lib/linzer/
|
202
|
+
- lib/linzer/message/adapter.rb
|
203
|
+
- lib/linzer/message/adapter/abstract.rb
|
204
|
+
- lib/linzer/message/adapter/http_gem/request.rb
|
205
|
+
- lib/linzer/message/adapter/http_gem/response.rb
|
206
|
+
- lib/linzer/message/adapter/net_http/request.rb
|
207
|
+
- lib/linzer/message/adapter/net_http/response.rb
|
208
|
+
- lib/linzer/message/adapter/rack/common.rb
|
209
|
+
- lib/linzer/message/adapter/rack/request.rb
|
210
|
+
- lib/linzer/message/adapter/rack/response.rb
|
211
|
+
- lib/linzer/message/wrapper.rb
|
212
|
+
- lib/linzer/options.rb
|
153
213
|
- lib/linzer/rsa.rb
|
154
214
|
- lib/linzer/rsa_pss.rb
|
155
215
|
- lib/linzer/signature.rb
|
@@ -179,7 +239,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
179
239
|
- !ruby/object:Gem::Version
|
180
240
|
version: '0'
|
181
241
|
requirements: []
|
182
|
-
rubygems_version: 3.6.
|
242
|
+
rubygems_version: 3.6.8
|
183
243
|
specification_version: 4
|
184
244
|
summary: An implementation of HTTP Messages Signatures (RFC9421)
|
185
245
|
test_files: []
|
data/lib/linzer/request.rb
DELETED
@@ -1,95 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Linzer
|
4
|
-
module Request
|
5
|
-
extend self
|
6
|
-
|
7
|
-
def build(verb, uri = "/", params = {}, headers = {})
|
8
|
-
validate verb, uri, params, headers
|
9
|
-
|
10
|
-
# XXX: to-do: handle rack request params?
|
11
|
-
request_method = Rack.const_get(verb.upcase)
|
12
|
-
args = {
|
13
|
-
"REQUEST_METHOD" => request_method,
|
14
|
-
"PATH_INFO" => uri.to_str,
|
15
|
-
"rack.input" => StringIO.new
|
16
|
-
}
|
17
|
-
|
18
|
-
Rack::Request.new(build_rack_env(headers).merge(args))
|
19
|
-
end
|
20
|
-
|
21
|
-
def rack_header_name(field_name)
|
22
|
-
validate_header_name field_name
|
23
|
-
|
24
|
-
rack_name = field_name.upcase.tr("-", "_")
|
25
|
-
case field_name.downcase
|
26
|
-
when "content-type", "content-length"
|
27
|
-
rack_name
|
28
|
-
else
|
29
|
-
"HTTP_#{rack_name}"
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
def headers(rack_request)
|
34
|
-
rack_request
|
35
|
-
.each_header
|
36
|
-
.to_h
|
37
|
-
.select do |k, _|
|
38
|
-
k.start_with?("HTTP_") || %w[CONTENT_TYPE CONTENT_LENGTH].include?(k)
|
39
|
-
end
|
40
|
-
.transform_keys { |k| k.downcase.tr("_", "-") }
|
41
|
-
.transform_keys do |k|
|
42
|
-
%w[content-type content-length].include?(k) ? k : k.gsub(/^http-/, "")
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
private
|
47
|
-
|
48
|
-
def validate(verb, uri, params, headers)
|
49
|
-
validate_verb verb
|
50
|
-
validate_uri uri
|
51
|
-
validate_arg_hash headers: headers
|
52
|
-
validate_arg_hash params: params
|
53
|
-
end
|
54
|
-
|
55
|
-
def validate_verb(verb)
|
56
|
-
Rack.const_get(verb.upcase)
|
57
|
-
rescue => ex
|
58
|
-
unknown_method = "Unknown/invalid HTTP request method"
|
59
|
-
raise Error.new, unknown_method, cause: ex
|
60
|
-
end
|
61
|
-
|
62
|
-
def validate_uri(uri)
|
63
|
-
uri.to_str
|
64
|
-
rescue => ex
|
65
|
-
invalid_uri = "Invalid URI"
|
66
|
-
raise Error.new, invalid_uri, cause: ex
|
67
|
-
end
|
68
|
-
|
69
|
-
def validate_arg_hash(hsh)
|
70
|
-
arg_name = hsh.keys.first
|
71
|
-
hsh[arg_name].to_hash
|
72
|
-
rescue => ex
|
73
|
-
err_msg = "invalid \"#{arg_name}\" parameter, cannot be converted to hash."
|
74
|
-
raise Error.new, "Cannot build request: #{err_msg}", cause: ex
|
75
|
-
end
|
76
|
-
|
77
|
-
def validate_header_name(name)
|
78
|
-
raise ArgumentError.new, "Blank header name." if name.empty?
|
79
|
-
name.to_str
|
80
|
-
rescue => ex
|
81
|
-
err_msg = "Invalid header name: '#{name}'"
|
82
|
-
raise Error.new, err_msg, cause: ex
|
83
|
-
end
|
84
|
-
|
85
|
-
def build_rack_env(headers)
|
86
|
-
headers
|
87
|
-
.to_hash
|
88
|
-
.transform_values(&:to_s)
|
89
|
-
.transform_keys { |k| k.upcase.tr("-", "_") }
|
90
|
-
.transform_keys do |k|
|
91
|
-
%w[CONTENT_TYPE CONTENT_LENGTH].include?(k) ? k : "HTTP_#{k}"
|
92
|
-
end
|
93
|
-
end
|
94
|
-
end
|
95
|
-
end
|