scorched 1.0.3 → 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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ca89aa0414bd6f8f6ac42afd5fb7816198b4a9bdbf6b008cd32dbd5dcac89c7e
4
- data.tar.gz: 34b43e1c6975f32954c52aeaccb21ebd797b31abd5adeaeb2430dd0cdf5ae848
3
+ metadata.gz: 5df1a902354207de82c8dcb0a6f00c68d9455d20edc05b3e70a5ef2c806a229a
4
+ data.tar.gz: 2bd5dac53da50545d9d6f0d832e7928aeefb07ebfcbbd1749c300b0fd71355e4
5
5
  SHA512:
6
- metadata.gz: 752e607e45d78a21de7acaca053cca0d5f2b0b3b73f485c72a9c4779302c982fbf56496b248132ff7b4a895f2d50da2cfb579b7e6f7a7a008a4e5dd189eb4b8d
7
- data.tar.gz: a0680f3c093aff1b1de0e612f3bffb052e1fdb3d4d39b54b8838a2ae295a26bb65fabe7263d4dd3239ea5687014ed772fd5d9a10f0886260f27a9d435d4179d4
6
+ metadata.gz: 3becda9a8c64fd085500003132cd5bd982d3ba6b67c33c5cabe9d4011377df4072f76e79baedd34a2544ee1546c105305e506dd1b2c5347844fd3742abf396a4
7
+ data.tar.gz: 51988a63c584113976d5a99080174d0d008e08f91f1f1aac17d74b25d353e514e54a7a1a1ea95385a96fdba187846a543be82b933721936387fd9b439ceef849
data/CHANGES.md CHANGED
@@ -1,6 +1,10 @@
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
4
8
  ### v1.0.3
5
9
  * Fixed issue where routes with a `media_type` condition were prioritised over those without for HTTP requests accepting "*/*"
6
10
  ### v1.0.2
@@ -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
@@ -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.header, response]
8
+ response = [response.status, response.headers, response]
9
9
  end
10
10
  self.status, self.body = response[0], response[2]
11
- self.header.merge!(response[1])
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
- header.delete "Content-Type"
28
- header.delete "Content-Length"
27
+ delete_header "Content-Type"
28
+ delete_header "Content-Length"
29
29
  close
30
- [status.to_i, header, []]
30
+ [status.to_i, headers, []]
31
31
  else
32
- [status.to_i, header, body]
32
+ [status.to_i, headers, body]
33
33
  end
34
34
  end
35
35
 
@@ -12,7 +12,7 @@ module Scorched
12
12
  protected
13
13
 
14
14
  def file_server
15
- @file_server ||= Rack::File.new(@dir)
15
+ @file_server ||= Rack::Files.new(@dir)
16
16
  end
17
17
  end
18
18
  end
@@ -1,3 +1,3 @@
1
1
  module Scorched
2
- VERSION = '1.0.3'
2
+ VERSION = '1.1.0.pre'
3
3
  end
data/lib/scorched.rb CHANGED
@@ -2,6 +2,7 @@ ENV['APP_ENV'] ||= ENV['RACK_ENV'] || 'development'
2
2
 
3
3
  # Gems
4
4
  require 'rack'
5
+ require 'rack/session'
5
6
  require 'rack/accept'
6
7
  require 'scorched/accept'
7
8
  require 'tilt'
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', '~> 2.0'
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'
@@ -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 and percent sign" do
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: 'test' }
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: 'test' }
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.3
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: 2023-02-23 00:00:00.000000000 Z
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: '2.0'
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: '2.0'
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.3.7
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: