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.
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.beta2
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/request.rb
152
- - lib/linzer/response.rb
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.7
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: []
@@ -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
@@ -1,9 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Linzer
4
- module Response
5
- def new_response(body = nil, status = 200, headers = {})
6
- Rack::Response.new(body, status, headers.transform_values(&:to_s))
7
- end
8
- end
9
- end