hanami-controller 2.2.0 → 2.3.0.beta2
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 +88 -0
- data/README.md +87 -88
- data/hanami-controller.gemspec +3 -3
- data/lib/hanami/action/cache/cache_control.rb +1 -0
- data/lib/hanami/action/cache/conditional_get.rb +1 -1
- data/lib/hanami/action/cache/expires.rb +1 -0
- data/lib/hanami/action/config/formats.rb +153 -78
- data/lib/hanami/action/config.rb +30 -1
- data/lib/hanami/action/constants.rb +8 -8
- data/lib/hanami/action/errors.rb +1 -1
- data/lib/hanami/action/mime.rb +202 -101
- data/lib/hanami/action/params.rb +1 -7
- data/lib/hanami/action/rack/file.rb +2 -2
- data/lib/hanami/action/rack_utils.rb +11 -0
- data/lib/hanami/action/request/session.rb +68 -0
- data/lib/hanami/action/request.rb +29 -3
- data/lib/hanami/action/response.rb +8 -5
- data/lib/hanami/action.rb +17 -5
- data/lib/hanami/controller/version.rb +1 -1
- metadata +12 -13
data/lib/hanami/action.rb
CHANGED
|
@@ -7,6 +7,7 @@ require "hanami/utils/kernel"
|
|
|
7
7
|
require "hanami/utils/string"
|
|
8
8
|
require "rack"
|
|
9
9
|
require "rack/utils"
|
|
10
|
+
require "hanami/action/rack_utils"
|
|
10
11
|
require "zeitwerk"
|
|
11
12
|
|
|
12
13
|
require_relative "action/constants"
|
|
@@ -61,6 +62,7 @@ module Hanami
|
|
|
61
62
|
setting :formats, default: Config::Formats.new, mutable: true
|
|
62
63
|
setting :default_charset
|
|
63
64
|
setting :default_headers, default: {}, constructor: -> (headers) { headers.compact }
|
|
65
|
+
setting :default_tld_length, default: 1
|
|
64
66
|
setting :cookies, default: {}, constructor: -> (cookie_options) {
|
|
65
67
|
# Call `to_h` here to permit `ApplicationConfiguration::Cookies` object to be
|
|
66
68
|
# provided when application actions are configured
|
|
@@ -270,6 +272,15 @@ module Hanami
|
|
|
270
272
|
# @since 2.0.0
|
|
271
273
|
# @api public
|
|
272
274
|
def self.format(...)
|
|
275
|
+
msg = <<~TEXT
|
|
276
|
+
Hanami::Action `format` is deprecated and will be removed in Hanami 2.4.
|
|
277
|
+
|
|
278
|
+
Please use `config.formats.accept` instead.
|
|
279
|
+
|
|
280
|
+
See https://guides.hanamirb.org/v2.3/actions/formats-and-mime-types/ for details.
|
|
281
|
+
TEXT
|
|
282
|
+
warn(msg, category: :deprecated)
|
|
283
|
+
|
|
273
284
|
config.format(...)
|
|
274
285
|
end
|
|
275
286
|
|
|
@@ -312,7 +323,8 @@ module Hanami
|
|
|
312
323
|
request = build_request(
|
|
313
324
|
env: env,
|
|
314
325
|
params: params,
|
|
315
|
-
session_enabled: session_enabled
|
|
326
|
+
session_enabled: session_enabled?,
|
|
327
|
+
default_tld_length: config.default_tld_length
|
|
316
328
|
)
|
|
317
329
|
response = build_response(
|
|
318
330
|
request: request,
|
|
@@ -323,7 +335,7 @@ module Hanami
|
|
|
323
335
|
session_enabled: session_enabled?
|
|
324
336
|
)
|
|
325
337
|
|
|
326
|
-
|
|
338
|
+
enforce_accepted_media_types(request)
|
|
327
339
|
|
|
328
340
|
_run_before_callbacks(request, response)
|
|
329
341
|
handle(request, response)
|
|
@@ -410,7 +422,7 @@ module Hanami
|
|
|
410
422
|
|
|
411
423
|
# @since 2.0.0
|
|
412
424
|
# @api private
|
|
413
|
-
def
|
|
425
|
+
def enforce_accepted_media_types(request)
|
|
414
426
|
return if config.formats.empty?
|
|
415
427
|
|
|
416
428
|
Mime.enforce_accept(request, config) { return halt 406 }
|
|
@@ -561,7 +573,7 @@ module Hanami
|
|
|
561
573
|
#
|
|
562
574
|
# # Both Content-Type and X-No-Pass are removed because they're not allowed
|
|
563
575
|
def keep_response_header?(header)
|
|
564
|
-
ENTITY_HEADERS.include?(header)
|
|
576
|
+
ENTITY_HEADERS.include?(header.downcase)
|
|
565
577
|
end
|
|
566
578
|
|
|
567
579
|
# @since 2.0.0
|
|
@@ -593,7 +605,7 @@ module Hanami
|
|
|
593
605
|
_empty_headers(res) if _requires_empty_headers?(res)
|
|
594
606
|
_empty_body(res) if res.head?
|
|
595
607
|
|
|
596
|
-
res.set_format(
|
|
608
|
+
res.set_format(Mime.format_from_media_type(res.content_type, config))
|
|
597
609
|
res[:params] = req.params
|
|
598
610
|
res[:format] = res.format
|
|
599
611
|
res
|
metadata
CHANGED
|
@@ -1,43 +1,42 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: hanami-controller
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.
|
|
4
|
+
version: 2.3.0.beta2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Luca Guidi
|
|
8
|
-
autorequire:
|
|
9
8
|
bindir: bin
|
|
10
9
|
cert_chain: []
|
|
11
|
-
date:
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
12
11
|
dependencies:
|
|
13
12
|
- !ruby/object:Gem::Dependency
|
|
14
13
|
name: rack
|
|
15
14
|
requirement: !ruby/object:Gem::Requirement
|
|
16
15
|
requirements:
|
|
17
|
-
- - "
|
|
16
|
+
- - ">="
|
|
18
17
|
- !ruby/object:Gem::Version
|
|
19
|
-
version: '2.
|
|
18
|
+
version: '2.1'
|
|
20
19
|
type: :runtime
|
|
21
20
|
prerelease: false
|
|
22
21
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
22
|
requirements:
|
|
24
|
-
- - "
|
|
23
|
+
- - ">="
|
|
25
24
|
- !ruby/object:Gem::Version
|
|
26
|
-
version: '2.
|
|
25
|
+
version: '2.1'
|
|
27
26
|
- !ruby/object:Gem::Dependency
|
|
28
27
|
name: hanami-utils
|
|
29
28
|
requirement: !ruby/object:Gem::Requirement
|
|
30
29
|
requirements:
|
|
31
30
|
- - "~>"
|
|
32
31
|
- !ruby/object:Gem::Version
|
|
33
|
-
version:
|
|
32
|
+
version: 2.3.0.beta1
|
|
34
33
|
type: :runtime
|
|
35
34
|
prerelease: false
|
|
36
35
|
version_requirements: !ruby/object:Gem::Requirement
|
|
37
36
|
requirements:
|
|
38
37
|
- - "~>"
|
|
39
38
|
- !ruby/object:Gem::Version
|
|
40
|
-
version:
|
|
39
|
+
version: 2.3.0.beta1
|
|
41
40
|
- !ruby/object:Gem::Dependency
|
|
42
41
|
name: dry-configurable
|
|
43
42
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -193,7 +192,9 @@ files:
|
|
|
193
192
|
- lib/hanami/action/mime/request_mime_weight.rb
|
|
194
193
|
- lib/hanami/action/params.rb
|
|
195
194
|
- lib/hanami/action/rack/file.rb
|
|
195
|
+
- lib/hanami/action/rack_utils.rb
|
|
196
196
|
- lib/hanami/action/request.rb
|
|
197
|
+
- lib/hanami/action/request/session.rb
|
|
197
198
|
- lib/hanami/action/response.rb
|
|
198
199
|
- lib/hanami/action/session.rb
|
|
199
200
|
- lib/hanami/action/validatable.rb
|
|
@@ -206,7 +207,6 @@ licenses:
|
|
|
206
207
|
- MIT
|
|
207
208
|
metadata:
|
|
208
209
|
rubygems_mfa_required: 'true'
|
|
209
|
-
post_install_message:
|
|
210
210
|
rdoc_options: []
|
|
211
211
|
require_paths:
|
|
212
212
|
- lib
|
|
@@ -214,15 +214,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
214
214
|
requirements:
|
|
215
215
|
- - ">="
|
|
216
216
|
- !ruby/object:Gem::Version
|
|
217
|
-
version: '3.
|
|
217
|
+
version: '3.2'
|
|
218
218
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
219
219
|
requirements:
|
|
220
220
|
- - ">="
|
|
221
221
|
- !ruby/object:Gem::Version
|
|
222
222
|
version: '0'
|
|
223
223
|
requirements: []
|
|
224
|
-
rubygems_version: 3.
|
|
225
|
-
signing_key:
|
|
224
|
+
rubygems_version: 3.6.9
|
|
226
225
|
specification_version: 4
|
|
227
226
|
summary: Complete, fast and testable actions for Rack and Hanami
|
|
228
227
|
test_files: []
|