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.
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
- enforce_accepted_mime_types(request)
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 enforce_accepted_mime_types(request)
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(Action::Mime.detect_format(res.content_type, config))
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
@@ -8,6 +8,6 @@ module Hanami
8
8
  #
9
9
  # @since 0.1.0
10
10
  # @api public
11
- VERSION = "2.2.0"
11
+ VERSION = "2.3.0.beta2"
12
12
  end
13
13
  end
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.2.0
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: 2024-11-05 00:00:00.000000000 Z
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.0'
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.0'
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: '2.2'
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: '2.2'
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.1'
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.5.22
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: []