downspout 0.2.6 → 0.2.7
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/VERSION +1 -1
- data/lib/downspout/downloader.rb +13 -3
- data/test/unit/downloader_test.rb +5 -0
- metadata +4 -4
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
0.2.
|
|
1
|
+
0.2.7
|
data/lib/downspout/downloader.rb
CHANGED
|
@@ -132,12 +132,18 @@ module Downspout
|
|
|
132
132
|
$logger.debug("downspout | downloader | download! | #{self.basename} downloaded? : #{downloaded} ")
|
|
133
133
|
@finished_at = Time.now
|
|
134
134
|
|
|
135
|
-
new_name = generate_file_name
|
|
135
|
+
new_name = generate_file_name
|
|
136
|
+
|
|
136
137
|
if (tf && new_name && !(@basename == new_name)) then
|
|
137
138
|
# rename file more appropriately
|
|
138
139
|
$logger.debug("downspout | downloader | download! | Renaming #{@basename} to #{new_name} ...")
|
|
139
140
|
new_path = File.join( File.dirname( tf.path ), new_name)
|
|
140
|
-
|
|
141
|
+
begin
|
|
142
|
+
FileUtils.mv( tf.path, new_path )
|
|
143
|
+
rescue Exception => e
|
|
144
|
+
$logger.error("downspout | downloader | download! | Exception while renaming #{@basename} : #{e}")
|
|
145
|
+
raise e
|
|
146
|
+
end
|
|
141
147
|
@path = new_path
|
|
142
148
|
end
|
|
143
149
|
|
|
@@ -317,7 +323,11 @@ module Downspout
|
|
|
317
323
|
return result
|
|
318
324
|
end
|
|
319
325
|
|
|
326
|
+
|
|
327
|
+
# Extracts filename from Content-Disposition Header per RFC 2183
|
|
328
|
+
# "http://tools.ietf.org/html/rfc2183"
|
|
320
329
|
def file_name_from_content_disposition
|
|
330
|
+
|
|
321
331
|
file_name = nil
|
|
322
332
|
|
|
323
333
|
cd_key = response_headers.keys.select{|k| k =~ /content-disposition/i }.first
|
|
@@ -326,7 +336,7 @@ module Downspout
|
|
|
326
336
|
disposition = @response_headers[cd_key]
|
|
327
337
|
if disposition then
|
|
328
338
|
# example : Content-Disposition: attachment; filename="iPad_User_Guide.pdf"
|
|
329
|
-
file_name = disposition.match("filename=\"?([
|
|
339
|
+
file_name = disposition.match("filename=\"?([^;\"]+)\"?")[1]
|
|
330
340
|
end
|
|
331
341
|
end
|
|
332
342
|
|
|
@@ -236,6 +236,11 @@ class DownloaderTest < Test::Unit::TestCase
|
|
|
236
236
|
assert_equal "0123456789_X.pdf", @dlx.send("generate_file_name")
|
|
237
237
|
end
|
|
238
238
|
|
|
239
|
+
should "extract the expected file name (followed by size)" do
|
|
240
|
+
@dlx.response_headers["Content-Disposition"].gsub!("0123456789_X.pdf", "2c2afa1c-1b47-422e-bf2d-9848373381bc.pdf;size=5524642")
|
|
241
|
+
assert_equal "2c2afa1c-1b47-422e-bf2d-9848373381bc.pdf", @dlx.send("generate_file_name")
|
|
242
|
+
end
|
|
243
|
+
|
|
239
244
|
end
|
|
240
245
|
|
|
241
246
|
end
|
metadata
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: downspout
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
hash:
|
|
4
|
+
hash: 25
|
|
5
5
|
prerelease:
|
|
6
6
|
segments:
|
|
7
7
|
- 0
|
|
8
8
|
- 2
|
|
9
|
-
-
|
|
10
|
-
version: 0.2.
|
|
9
|
+
- 7
|
|
10
|
+
version: 0.2.7
|
|
11
11
|
platform: ruby
|
|
12
12
|
authors:
|
|
13
13
|
- Phi.Sanders
|
|
@@ -15,7 +15,7 @@ autorequire:
|
|
|
15
15
|
bindir: bin
|
|
16
16
|
cert_chain: []
|
|
17
17
|
|
|
18
|
-
date: 2011-
|
|
18
|
+
date: 2011-04-15 00:00:00 -04:00
|
|
19
19
|
default_executable:
|
|
20
20
|
dependencies:
|
|
21
21
|
- !ruby/object:Gem::Dependency
|