rack-raw-upload 1.0.10 → 1.0.11
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/README.md +1 -1
- data/lib/rack/raw_upload.rb +2 -6
- data/test/raw_upload_test.rb +10 -2
- metadata +3 -3
data/README.md
CHANGED
@@ -12,7 +12,7 @@ Rack::RawUpload performs this conversion when all these conditions are met:
|
|
12
12
|
2. The mimetype is one of
|
13
13
|
* application/x-www-form-urlencoded
|
14
14
|
* multipart/form-data
|
15
|
-
3. The
|
15
|
+
3. The Content-Length is greater than 0
|
16
16
|
|
17
17
|
## Configuration
|
18
18
|
|
data/lib/rack/raw_upload.rb
CHANGED
@@ -3,7 +3,7 @@ require 'tmpdir' # Needed in 1.8.7 to access Dir::tmpdir
|
|
3
3
|
module Rack
|
4
4
|
class RawUpload
|
5
5
|
|
6
|
-
VERSION = '1.0.
|
6
|
+
VERSION = '1.0.11'
|
7
7
|
|
8
8
|
def initialize(app, opts = {})
|
9
9
|
@app = app
|
@@ -76,7 +76,7 @@ module Rack
|
|
76
76
|
upload_path?(env['PATH_INFO']) &&
|
77
77
|
%{POST PUT}.include?(env['REQUEST_METHOD']) &&
|
78
78
|
content_type_of_raw_file?(env['CONTENT_TYPE']) &&
|
79
|
-
|
79
|
+
env['CONTENT_LENGTH'].to_i > 0
|
80
80
|
end
|
81
81
|
|
82
82
|
def literal_path_match?(request_path, candidate)
|
@@ -98,10 +98,6 @@ module Rack
|
|
98
98
|
end
|
99
99
|
end
|
100
100
|
|
101
|
-
def input_is_present?(input)
|
102
|
-
!input.nil? && (!input.respond_to?(:empty?) || !input.empty?)
|
103
|
-
end
|
104
|
-
|
105
101
|
def random_string
|
106
102
|
(0...8).map{65.+(rand(25)).chr}.join
|
107
103
|
end
|
data/test/raw_upload_test.rb
CHANGED
@@ -26,7 +26,7 @@ class RawUploadTest < Test::Unit::TestCase
|
|
26
26
|
def upload(env = {})
|
27
27
|
env = {
|
28
28
|
'CONTENT_TYPE' => 'application/octet-stream',
|
29
|
-
'rack.input' => @file
|
29
|
+
'rack.input' => @file,
|
30
30
|
}.merge(env)
|
31
31
|
do_request(env)
|
32
32
|
end
|
@@ -34,15 +34,18 @@ class RawUploadTest < Test::Unit::TestCase
|
|
34
34
|
def post(env = {})
|
35
35
|
env = {
|
36
36
|
'CONTENT_TYPE' => 'multipart/form-data',
|
37
|
-
'rack.input' => StringIO.new('things=stuff')
|
37
|
+
'rack.input' => StringIO.new('things=stuff'),
|
38
38
|
}.merge(env)
|
39
39
|
do_request(env)
|
40
40
|
end
|
41
41
|
|
42
42
|
def do_request(env = {})
|
43
|
+
input = env['rack.input']
|
44
|
+
length = input.respond_to?(:size) ? input.size : File.size(input.path)
|
43
45
|
env = {
|
44
46
|
'REQUEST_METHOD' => 'POST',
|
45
47
|
'PATH_INFO' => '/some/path',
|
48
|
+
'CONTENT_LENGTH' => length.to_s,
|
46
49
|
}.merge(env)
|
47
50
|
request(env['PATH_INFO'], env)
|
48
51
|
end
|
@@ -78,6 +81,11 @@ class RawUploadTest < Test::Unit::TestCase
|
|
78
81
|
assert_successful_non_upload
|
79
82
|
end
|
80
83
|
|
84
|
+
should "not work when there is no input" do
|
85
|
+
upload('rack.input' => StringIO.new(''))
|
86
|
+
assert_successful_non_upload
|
87
|
+
end
|
88
|
+
|
81
89
|
# "stuff" should be something like "boundary=----WebKitFormBoundaryeKPeU4p65YgercgO",
|
82
90
|
# but if I do that here, Rack tries to be clever and the test breaks
|
83
91
|
should "not work with Content-Type 'multipart/form-data; stuff'" do
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rack-raw-upload
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 1
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 1
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 1.0.
|
9
|
+
- 11
|
10
|
+
version: 1.0.11
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Pablo Brasero
|