hanami-action 3.0.0.rc1
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 +7 -0
- data/CHANGELOG.md +985 -0
- data/LICENSE +20 -0
- data/README.md +873 -0
- data/hanami-action.gemspec +39 -0
- data/lib/hanami/action/body_parser/json.rb +20 -0
- data/lib/hanami/action/body_parser/multipart_form.rb +22 -0
- data/lib/hanami/action/body_parser.rb +109 -0
- data/lib/hanami/action/cache/cache_control.rb +84 -0
- data/lib/hanami/action/cache/conditional_get.rb +101 -0
- data/lib/hanami/action/cache/directives.rb +126 -0
- data/lib/hanami/action/cache/expires.rb +84 -0
- data/lib/hanami/action/cache.rb +29 -0
- data/lib/hanami/action/config/formats.rb +256 -0
- data/lib/hanami/action/config.rb +172 -0
- data/lib/hanami/action/constants.rb +283 -0
- data/lib/hanami/action/cookie_jar.rb +214 -0
- data/lib/hanami/action/cookies.rb +27 -0
- data/lib/hanami/action/csrf_protection.rb +217 -0
- data/lib/hanami/action/errors.rb +109 -0
- data/lib/hanami/action/flash.rb +176 -0
- data/lib/hanami/action/halt.rb +18 -0
- data/lib/hanami/action/mime/request_mime_weight.rb +66 -0
- data/lib/hanami/action/mime.rb +438 -0
- data/lib/hanami/action/params.rb +342 -0
- data/lib/hanami/action/rack/file.rb +41 -0
- data/lib/hanami/action/rack_utils.rb +11 -0
- data/lib/hanami/action/request/session.rb +68 -0
- data/lib/hanami/action/request.rb +141 -0
- data/lib/hanami/action/response.rb +481 -0
- data/lib/hanami/action/session.rb +47 -0
- data/lib/hanami/action/validatable.rb +166 -0
- data/lib/hanami/action/version.rb +13 -0
- data/lib/hanami/action/view_name_inferrer.rb +56 -0
- data/lib/hanami/action.rb +672 -0
- data/lib/hanami/http/status.rb +149 -0
- data/lib/hanami-action.rb +3 -0
- metadata +153 -0
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "rack/utils"
|
|
4
|
+
|
|
5
|
+
module Hanami
|
|
6
|
+
# @since 0.1.0
|
|
7
|
+
# @api private
|
|
8
|
+
module Http
|
|
9
|
+
# An HTTP status
|
|
10
|
+
#
|
|
11
|
+
# @since 0.1.0
|
|
12
|
+
# @api private
|
|
13
|
+
class Status
|
|
14
|
+
# A set of standard codes and messages for HTTP statuses
|
|
15
|
+
#
|
|
16
|
+
# @since 0.1.0
|
|
17
|
+
# @api private
|
|
18
|
+
ALL = ::Rack::Utils::HTTP_STATUS_CODES
|
|
19
|
+
|
|
20
|
+
# Symbolic names for status codes
|
|
21
|
+
#
|
|
22
|
+
# @since 2.0.2
|
|
23
|
+
# @api private
|
|
24
|
+
SYMBOLS = ::Rack::Utils::SYMBOL_TO_STATUS_CODE.merge(
|
|
25
|
+
unprocessable_content: 422,
|
|
26
|
+
unprocessable_entity: 422
|
|
27
|
+
)
|
|
28
|
+
|
|
29
|
+
# Return a status for the given code
|
|
30
|
+
#
|
|
31
|
+
# @param code [Integer, Symbol] a valid HTTP code
|
|
32
|
+
#
|
|
33
|
+
# @return [Array] a pair of code and message for an HTTP status
|
|
34
|
+
#
|
|
35
|
+
# @raise [Hanami::Action::UnknownHttpStatusError] if the given code
|
|
36
|
+
# cannot be associated to a known HTTP status
|
|
37
|
+
#
|
|
38
|
+
# @since 0.1.0
|
|
39
|
+
# @api private
|
|
40
|
+
#
|
|
41
|
+
# @see https://guides.hanamirb.org/v2.0/actions/status-codes/
|
|
42
|
+
#
|
|
43
|
+
# @example Integer HTTP Status
|
|
44
|
+
# require "hanami/http/status"
|
|
45
|
+
#
|
|
46
|
+
# Hanami::Http::Status.for_code(401)
|
|
47
|
+
# # => [401, "Unauthorized"]
|
|
48
|
+
#
|
|
49
|
+
# @example Symbol HTTP Status
|
|
50
|
+
# require "hanami/http/status"
|
|
51
|
+
#
|
|
52
|
+
# Hanami::Http::Status.for_code(:unauthorized)
|
|
53
|
+
# # => [401, "Unauthorized"]
|
|
54
|
+
#
|
|
55
|
+
# @example Unknown HTTP Status
|
|
56
|
+
# require "hanami/http/status"
|
|
57
|
+
#
|
|
58
|
+
# Hanami::Http::Status.for_code(999)
|
|
59
|
+
# # => raise Hanami::Action::UnknownHttpStatusError
|
|
60
|
+
#
|
|
61
|
+
# Hanami::Http::Status.for_code(:foo)
|
|
62
|
+
# # => raise Hanami::Action::UnknownHttpStatusError
|
|
63
|
+
def self.for_code(code)
|
|
64
|
+
case code
|
|
65
|
+
when Integer
|
|
66
|
+
ALL.assoc(code)
|
|
67
|
+
when Symbol
|
|
68
|
+
ALL.assoc(SYMBOLS[code])
|
|
69
|
+
end or raise ::Hanami::Action::UnknownHttpStatusError.new(code)
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
# Return a status code for the given code
|
|
73
|
+
#
|
|
74
|
+
# @param code [Integer,Symbol] a valid HTTP code
|
|
75
|
+
#
|
|
76
|
+
# @return [Integer] a message for the given status code
|
|
77
|
+
#
|
|
78
|
+
# @raise [Hanami::Action::UnknownHttpStatusError] if the given code
|
|
79
|
+
# cannot be associated to a known HTTP status
|
|
80
|
+
#
|
|
81
|
+
# @see https://guides.hanamirb.org/v2.0/actions/status-codes/
|
|
82
|
+
#
|
|
83
|
+
# @since 2.0.2
|
|
84
|
+
# @api private
|
|
85
|
+
#
|
|
86
|
+
# @example Integer HTTP Status
|
|
87
|
+
# require "hanami/http/status"
|
|
88
|
+
#
|
|
89
|
+
# Hanami::Http::Status.lookup(401)
|
|
90
|
+
# # => 401
|
|
91
|
+
#
|
|
92
|
+
# @example Symbol HTTP Status
|
|
93
|
+
# require "hanami/http/status"
|
|
94
|
+
#
|
|
95
|
+
# Hanami::Http::Status.lookup(:unauthorized)
|
|
96
|
+
# # => 401
|
|
97
|
+
#
|
|
98
|
+
# @example Unknown HTTP Status
|
|
99
|
+
# require "hanami/http/status"
|
|
100
|
+
#
|
|
101
|
+
# Hanami::Http::Status.lookup(999)
|
|
102
|
+
# # => raise Hanami::Action::UnknownHttpStatusError
|
|
103
|
+
#
|
|
104
|
+
# Hanami::Http::Status.lookup(:foo)
|
|
105
|
+
# # => raise Hanami::Action::UnknownHttpStatusError
|
|
106
|
+
def self.lookup(code)
|
|
107
|
+
for_code(code)[0]
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
# Return a message for the given status code
|
|
111
|
+
#
|
|
112
|
+
# @param code [Integer,Symbol] a valid HTTP code
|
|
113
|
+
#
|
|
114
|
+
# @return [String] a message for the given status code
|
|
115
|
+
#
|
|
116
|
+
# @raise [Hanami::Action::UnknownHttpStatusError] if the given code
|
|
117
|
+
# cannot be associated to a known HTTP status
|
|
118
|
+
#
|
|
119
|
+
# @see https://guides.hanamirb.org/v2.0/actions/status-codes/
|
|
120
|
+
#
|
|
121
|
+
# @since 0.3.2
|
|
122
|
+
# @api private
|
|
123
|
+
#
|
|
124
|
+
# @example Integer HTTP Status
|
|
125
|
+
# require "hanami/http/status"
|
|
126
|
+
#
|
|
127
|
+
# Hanami::Http::Status.message_for(401)
|
|
128
|
+
# # => "Unauthorized"
|
|
129
|
+
#
|
|
130
|
+
# @example Symbol HTTP Status
|
|
131
|
+
# require "hanami/http/status"
|
|
132
|
+
#
|
|
133
|
+
# Hanami::Http::Status.message_for(:unauthorized)
|
|
134
|
+
# # => "Unauthorized"
|
|
135
|
+
#
|
|
136
|
+
# @example Unknown HTTP Status
|
|
137
|
+
# require "hanami/http/status"
|
|
138
|
+
#
|
|
139
|
+
# Hanami::Http::Status.message_for(999)
|
|
140
|
+
# # => raise Hanami::Action::UnknownHttpStatusError
|
|
141
|
+
#
|
|
142
|
+
# Hanami::Http::Status.message_for(:foo)
|
|
143
|
+
# # => raise Hanami::Action::UnknownHttpStatusError
|
|
144
|
+
def self.message_for(code)
|
|
145
|
+
for_code(code)[1]
|
|
146
|
+
end
|
|
147
|
+
end
|
|
148
|
+
end
|
|
149
|
+
end
|
metadata
ADDED
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: hanami-action
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 3.0.0.rc1
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- Hanakai team
|
|
8
|
+
bindir: exe
|
|
9
|
+
cert_chain: []
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
11
|
+
dependencies:
|
|
12
|
+
- !ruby/object:Gem::Dependency
|
|
13
|
+
name: rack
|
|
14
|
+
requirement: !ruby/object:Gem::Requirement
|
|
15
|
+
requirements:
|
|
16
|
+
- - ">="
|
|
17
|
+
- !ruby/object:Gem::Version
|
|
18
|
+
version: 2.2.16
|
|
19
|
+
type: :runtime
|
|
20
|
+
prerelease: false
|
|
21
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
22
|
+
requirements:
|
|
23
|
+
- - ">="
|
|
24
|
+
- !ruby/object:Gem::Version
|
|
25
|
+
version: 2.2.16
|
|
26
|
+
- !ruby/object:Gem::Dependency
|
|
27
|
+
name: hanami-utils
|
|
28
|
+
requirement: !ruby/object:Gem::Requirement
|
|
29
|
+
requirements:
|
|
30
|
+
- - "~>"
|
|
31
|
+
- !ruby/object:Gem::Version
|
|
32
|
+
version: 3.0.0.rc
|
|
33
|
+
type: :runtime
|
|
34
|
+
prerelease: false
|
|
35
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
36
|
+
requirements:
|
|
37
|
+
- - "~>"
|
|
38
|
+
- !ruby/object:Gem::Version
|
|
39
|
+
version: 3.0.0.rc
|
|
40
|
+
- !ruby/object:Gem::Dependency
|
|
41
|
+
name: dry-configurable
|
|
42
|
+
requirement: !ruby/object:Gem::Requirement
|
|
43
|
+
requirements:
|
|
44
|
+
- - "~>"
|
|
45
|
+
- !ruby/object:Gem::Version
|
|
46
|
+
version: '1.4'
|
|
47
|
+
type: :runtime
|
|
48
|
+
prerelease: false
|
|
49
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
50
|
+
requirements:
|
|
51
|
+
- - "~>"
|
|
52
|
+
- !ruby/object:Gem::Version
|
|
53
|
+
version: '1.4'
|
|
54
|
+
- !ruby/object:Gem::Dependency
|
|
55
|
+
name: dry-core
|
|
56
|
+
requirement: !ruby/object:Gem::Requirement
|
|
57
|
+
requirements:
|
|
58
|
+
- - "~>"
|
|
59
|
+
- !ruby/object:Gem::Version
|
|
60
|
+
version: '1.0'
|
|
61
|
+
type: :runtime
|
|
62
|
+
prerelease: false
|
|
63
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
64
|
+
requirements:
|
|
65
|
+
- - "~>"
|
|
66
|
+
- !ruby/object:Gem::Version
|
|
67
|
+
version: '1.0'
|
|
68
|
+
- !ruby/object:Gem::Dependency
|
|
69
|
+
name: zeitwerk
|
|
70
|
+
requirement: !ruby/object:Gem::Requirement
|
|
71
|
+
requirements:
|
|
72
|
+
- - "~>"
|
|
73
|
+
- !ruby/object:Gem::Version
|
|
74
|
+
version: '2.6'
|
|
75
|
+
type: :runtime
|
|
76
|
+
prerelease: false
|
|
77
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
78
|
+
requirements:
|
|
79
|
+
- - "~>"
|
|
80
|
+
- !ruby/object:Gem::Version
|
|
81
|
+
version: '2.6'
|
|
82
|
+
description: Complete, fast and testable actions for Rack and Hanami
|
|
83
|
+
email:
|
|
84
|
+
- info@hanakai.org
|
|
85
|
+
executables: []
|
|
86
|
+
extensions: []
|
|
87
|
+
extra_rdoc_files:
|
|
88
|
+
- CHANGELOG.md
|
|
89
|
+
- LICENSE
|
|
90
|
+
- README.md
|
|
91
|
+
files:
|
|
92
|
+
- CHANGELOG.md
|
|
93
|
+
- LICENSE
|
|
94
|
+
- README.md
|
|
95
|
+
- hanami-action.gemspec
|
|
96
|
+
- lib/hanami-action.rb
|
|
97
|
+
- lib/hanami/action.rb
|
|
98
|
+
- lib/hanami/action/body_parser.rb
|
|
99
|
+
- lib/hanami/action/body_parser/json.rb
|
|
100
|
+
- lib/hanami/action/body_parser/multipart_form.rb
|
|
101
|
+
- lib/hanami/action/cache.rb
|
|
102
|
+
- lib/hanami/action/cache/cache_control.rb
|
|
103
|
+
- lib/hanami/action/cache/conditional_get.rb
|
|
104
|
+
- lib/hanami/action/cache/directives.rb
|
|
105
|
+
- lib/hanami/action/cache/expires.rb
|
|
106
|
+
- lib/hanami/action/config.rb
|
|
107
|
+
- lib/hanami/action/config/formats.rb
|
|
108
|
+
- lib/hanami/action/constants.rb
|
|
109
|
+
- lib/hanami/action/cookie_jar.rb
|
|
110
|
+
- lib/hanami/action/cookies.rb
|
|
111
|
+
- lib/hanami/action/csrf_protection.rb
|
|
112
|
+
- lib/hanami/action/errors.rb
|
|
113
|
+
- lib/hanami/action/flash.rb
|
|
114
|
+
- lib/hanami/action/halt.rb
|
|
115
|
+
- lib/hanami/action/mime.rb
|
|
116
|
+
- lib/hanami/action/mime/request_mime_weight.rb
|
|
117
|
+
- lib/hanami/action/params.rb
|
|
118
|
+
- lib/hanami/action/rack/file.rb
|
|
119
|
+
- lib/hanami/action/rack_utils.rb
|
|
120
|
+
- lib/hanami/action/request.rb
|
|
121
|
+
- lib/hanami/action/request/session.rb
|
|
122
|
+
- lib/hanami/action/response.rb
|
|
123
|
+
- lib/hanami/action/session.rb
|
|
124
|
+
- lib/hanami/action/validatable.rb
|
|
125
|
+
- lib/hanami/action/version.rb
|
|
126
|
+
- lib/hanami/action/view_name_inferrer.rb
|
|
127
|
+
- lib/hanami/http/status.rb
|
|
128
|
+
homepage: https://hanamirb.org
|
|
129
|
+
licenses:
|
|
130
|
+
- MIT
|
|
131
|
+
metadata:
|
|
132
|
+
changelog_uri: https://github.com/hanami/hanami-action/blob/main/CHANGELOG.md
|
|
133
|
+
source_code_uri: https://github.com/hanami/hanami-action
|
|
134
|
+
bug_tracker_uri: https://github.com/hanami/hanami-action/issues
|
|
135
|
+
funding_uri: https://github.com/sponsors/hanami
|
|
136
|
+
rdoc_options: []
|
|
137
|
+
require_paths:
|
|
138
|
+
- lib
|
|
139
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
140
|
+
requirements:
|
|
141
|
+
- - ">="
|
|
142
|
+
- !ruby/object:Gem::Version
|
|
143
|
+
version: '3.3'
|
|
144
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
145
|
+
requirements:
|
|
146
|
+
- - ">="
|
|
147
|
+
- !ruby/object:Gem::Version
|
|
148
|
+
version: '0'
|
|
149
|
+
requirements: []
|
|
150
|
+
rubygems_version: 4.0.14
|
|
151
|
+
specification_version: 4
|
|
152
|
+
summary: Complete, fast and testable actions for Rack and Hanami
|
|
153
|
+
test_files: []
|