scorched 1.0.2 → 1.1.0.pre
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/CHANGES.md +6 -0
- data/Gemfile +1 -1
- data/lib/scorched/controller.rb +2 -1
- data/lib/scorched/request.rb +1 -1
- data/lib/scorched/response.rb +6 -6
- data/lib/scorched/static.rb +1 -1
- data/lib/scorched/version.rb +1 -1
- data/lib/scorched.rb +1 -0
- data/scorched.gemspec +2 -1
- data/spec/controller_spec.rb +12 -4
- metadata +19 -8
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 5df1a902354207de82c8dcb0a6f00c68d9455d20edc05b3e70a5ef2c806a229a
|
|
4
|
+
data.tar.gz: 2bd5dac53da50545d9d6f0d832e7928aeefb07ebfcbbd1749c300b0fd71355e4
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 3becda9a8c64fd085500003132cd5bd982d3ba6b67c33c5cabe9d4011377df4072f76e79baedd34a2544ee1546c105305e506dd1b2c5347844fd3742abf396a4
|
|
7
|
+
data.tar.gz: 51988a63c584113976d5a99080174d0d008e08f91f1f1aac17d74b25d353e514e54a7a1a1ea95385a96fdba187846a543be82b933721936387fd9b439ceef849
|
data/CHANGES.md
CHANGED
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
Changelog
|
|
2
2
|
=========
|
|
3
3
|
|
|
4
|
+
### v1.1.0.pre
|
|
5
|
+
* Updated dependancies
|
|
6
|
+
* Now compatible with (and requires) Rack 3.x
|
|
7
|
+
* No longer escapes "+" into space characters
|
|
8
|
+
### v1.0.3
|
|
9
|
+
* Fixed issue where routes with a `media_type` condition were prioritised over those without for HTTP requests accepting "*/*"
|
|
4
10
|
### v1.0.2
|
|
5
11
|
* Now requiring CGI instead of URI library as per v1.0.1 deprecation fixes.
|
|
6
12
|
### v1.0.1
|
data/Gemfile
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
source 'https://rubygems.org'
|
|
2
|
-
gemspec
|
|
2
|
+
gemspec
|
data/lib/scorched/controller.rb
CHANGED
|
@@ -377,7 +377,8 @@ module Scorched
|
|
|
377
377
|
priority = m.mapping[:priority] || 0
|
|
378
378
|
media_type_rank = [*m.mapping[:conditions][:media_type]].map { |type|
|
|
379
379
|
env['scorched.accept'][:accept].rank(type, true)
|
|
380
|
-
}.max
|
|
380
|
+
}.max
|
|
381
|
+
media_type_rank ||= env['scorched.accept'][:accept].rank('*/*', true) || 0 # Default to "*/*" if no media type condition specified.
|
|
381
382
|
order = -idx
|
|
382
383
|
[priority, media_type_rank, order]
|
|
383
384
|
end.reverse
|
data/lib/scorched/request.rb
CHANGED
|
@@ -33,7 +33,7 @@ module Scorched
|
|
|
33
33
|
# The unescaped URL, excluding the escaped forward-slash and percent. The resulting string will always be safe
|
|
34
34
|
# to unescape again in situations where the forward-slash or percent are expected and valid characters.
|
|
35
35
|
def unescaped_path
|
|
36
|
-
path_info.split(/(%25|%2F)/i).each_slice(2).map { |v, m| CGI.unescape(v) << (m || '') }.join('')
|
|
36
|
+
path_info.split(/(%25|%2F|\+)/i).each_slice(2).map { |v, m| CGI.unescape(v) << (m || '') }.join('')
|
|
37
37
|
end
|
|
38
38
|
|
|
39
39
|
private
|
data/lib/scorched/response.rb
CHANGED
|
@@ -5,10 +5,10 @@ module Scorched
|
|
|
5
5
|
def merge!(response)
|
|
6
6
|
return self if response == self
|
|
7
7
|
if Rack::Response === response
|
|
8
|
-
response = [response.status, response.
|
|
8
|
+
response = [response.status, response.headers, response]
|
|
9
9
|
end
|
|
10
10
|
self.status, self.body = response[0], response[2]
|
|
11
|
-
self.
|
|
11
|
+
self.headers.merge!(response[1])
|
|
12
12
|
self
|
|
13
13
|
end
|
|
14
14
|
|
|
@@ -24,12 +24,12 @@ module Scorched
|
|
|
24
24
|
self['Content-Type'] ||= 'text/html;charset=utf-8'
|
|
25
25
|
@block = block if block
|
|
26
26
|
if [204, 205, 304].include?(status.to_i)
|
|
27
|
-
|
|
28
|
-
|
|
27
|
+
delete_header "Content-Type"
|
|
28
|
+
delete_header "Content-Length"
|
|
29
29
|
close
|
|
30
|
-
[status.to_i,
|
|
30
|
+
[status.to_i, headers, []]
|
|
31
31
|
else
|
|
32
|
-
[status.to_i,
|
|
32
|
+
[status.to_i, headers, body]
|
|
33
33
|
end
|
|
34
34
|
end
|
|
35
35
|
|
data/lib/scorched/static.rb
CHANGED
data/lib/scorched/version.rb
CHANGED
data/lib/scorched.rb
CHANGED
data/scorched.gemspec
CHANGED
|
@@ -13,7 +13,8 @@ Gem::Specification.new 'scorched', Scorched::VERSION do |s|
|
|
|
13
13
|
|
|
14
14
|
s.required_ruby_version = '>= 2.0.0'
|
|
15
15
|
|
|
16
|
-
s.add_dependency 'rack', '~>
|
|
16
|
+
s.add_dependency 'rack', '~> 3.0'
|
|
17
|
+
s.add_dependency 'rack-session', '~> 2.1'
|
|
17
18
|
s.add_dependency 'rack-accept', '~> 0.4' # Used for Accept-Charset, Accept-Encoding and Accept-Language headers.
|
|
18
19
|
s.add_dependency 'scorched-accept', '~> 0.1' # Used for Accept header.
|
|
19
20
|
s.add_dependency 'tilt', '~> 2.0'
|
data/spec/controller_spec.rb
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
require_relative './helper.rb'
|
|
2
|
+
require 'securerandom'
|
|
2
3
|
|
|
3
4
|
module Scorched
|
|
4
5
|
describe Controller do
|
|
@@ -72,7 +73,7 @@ module Scorched
|
|
|
72
73
|
response.status.should == 200
|
|
73
74
|
end
|
|
74
75
|
|
|
75
|
-
it "unescapes all characters except for the forward-slash
|
|
76
|
+
it "unescapes all characters except for the forward-slash, percent sign and plus" do
|
|
76
77
|
app.map pattern: '/a (quite) big fish', target: generic_handler
|
|
77
78
|
rt.get('/a%20%28quite%29%20big%20fish').status.should == 200
|
|
78
79
|
app.map pattern: '/article/100%25 big%2Fsmall', target: generic_handler
|
|
@@ -80,6 +81,13 @@ module Scorched
|
|
|
80
81
|
app.map pattern: '/*$', target: generic_handler
|
|
81
82
|
rt.get('/page%2Fabout').status.should == 200
|
|
82
83
|
rt.get('/page/about').status.should == 404
|
|
84
|
+
|
|
85
|
+
app.get('/foo/*') { |x| x }
|
|
86
|
+
app.map pattern: '/bar', target: Class.new(Scorched::Controller) {
|
|
87
|
+
get('/*') { |x| x }
|
|
88
|
+
}
|
|
89
|
+
rt.get('/foo/hello%2Bworld').body.should == 'hello+world'
|
|
90
|
+
rt.get('/bar/hello%2Bworld').body.should == 'hello+world'
|
|
83
91
|
end
|
|
84
92
|
|
|
85
93
|
it "unmatched path doesn't always begin with a forward slash" do
|
|
@@ -342,7 +350,7 @@ module Scorched
|
|
|
342
350
|
inner_env['SCRIPT_NAME'].should == '/article'
|
|
343
351
|
inner_env['PATH_INFO'].should == '/name'
|
|
344
352
|
end
|
|
345
|
-
|
|
353
|
+
|
|
346
354
|
example "PATH_INFO and SCRIPT_NAME joined, should produce a full path" do
|
|
347
355
|
app.controller '/article/' do
|
|
348
356
|
get '/name' do
|
|
@@ -962,14 +970,14 @@ module Scorched
|
|
|
962
970
|
app.get('/') { rack_session = session }
|
|
963
971
|
rt.get('/')
|
|
964
972
|
rack_session.should be_nil
|
|
965
|
-
app.middleware << proc { use Rack::Session::Cookie, secret:
|
|
973
|
+
app.middleware << proc { use Rack::Session::Cookie, secret: SecureRandom.gen_random(64) }
|
|
966
974
|
rt.get('/')
|
|
967
975
|
rack_session.should be_a(Rack::Session::Abstract::SessionHash)
|
|
968
976
|
end
|
|
969
977
|
|
|
970
978
|
describe "flash" do
|
|
971
979
|
before(:each) do
|
|
972
|
-
app.middleware << proc { use Rack::Session::Cookie, secret:
|
|
980
|
+
app.middleware << proc { use Rack::Session::Cookie, secret: SecureRandom.gen_random(64) }
|
|
973
981
|
end
|
|
974
982
|
|
|
975
983
|
it "keeps session variables that live for one page load" do
|
metadata
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: scorched
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.0.
|
|
4
|
+
version: 1.1.0.pre
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Tom Wardrop
|
|
8
|
-
autorequire:
|
|
9
8
|
bindir: bin
|
|
10
9
|
cert_chain: []
|
|
11
|
-
date:
|
|
10
|
+
date: 2025-02-21 00:00:00.000000000 Z
|
|
12
11
|
dependencies:
|
|
13
12
|
- !ruby/object:Gem::Dependency
|
|
14
13
|
name: rack
|
|
@@ -16,14 +15,28 @@ dependencies:
|
|
|
16
15
|
requirements:
|
|
17
16
|
- - "~>"
|
|
18
17
|
- !ruby/object:Gem::Version
|
|
19
|
-
version: '
|
|
18
|
+
version: '3.0'
|
|
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: '
|
|
25
|
+
version: '3.0'
|
|
26
|
+
- !ruby/object:Gem::Dependency
|
|
27
|
+
name: rack-session
|
|
28
|
+
requirement: !ruby/object:Gem::Requirement
|
|
29
|
+
requirements:
|
|
30
|
+
- - "~>"
|
|
31
|
+
- !ruby/object:Gem::Version
|
|
32
|
+
version: '2.1'
|
|
33
|
+
type: :runtime
|
|
34
|
+
prerelease: false
|
|
35
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
36
|
+
requirements:
|
|
37
|
+
- - "~>"
|
|
38
|
+
- !ruby/object:Gem::Version
|
|
39
|
+
version: '2.1'
|
|
27
40
|
- !ruby/object:Gem::Dependency
|
|
28
41
|
name: rack-accept
|
|
29
42
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -175,7 +188,6 @@ homepage: http://scorchedrb.com
|
|
|
175
188
|
licenses:
|
|
176
189
|
- MIT
|
|
177
190
|
metadata: {}
|
|
178
|
-
post_install_message:
|
|
179
191
|
rdoc_options: []
|
|
180
192
|
require_paths:
|
|
181
193
|
- lib
|
|
@@ -190,8 +202,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
190
202
|
- !ruby/object:Gem::Version
|
|
191
203
|
version: '0'
|
|
192
204
|
requirements: []
|
|
193
|
-
rubygems_version: 3.
|
|
194
|
-
signing_key:
|
|
205
|
+
rubygems_version: 3.6.5
|
|
195
206
|
specification_version: 4
|
|
196
207
|
summary: Light-weight, DRY as a desert, web framework for Ruby
|
|
197
208
|
test_files:
|