scorched 1.0.3 → 1.1.0.pre

Sign up to get free protection for your applications and to get access to all the features.
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: