down 1.0.5 → 1.1.0
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/README.md +18 -1
- data/down.gemspec +1 -1
- data/lib/down.rb +10 -6
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: ae5eb943b2a1423b964812f6eabaab6e2db3ac80
|
|
4
|
+
data.tar.gz: d94df3114f9784599967e67bd74b2efaa53ff0de
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 858b972338a5b2252c6674cd55199ce29b491406fba507bac8c86ae8c342c62ca78d9f84bbf7d6f64f3c739e5d15e4328268d0be77e4682da58b1600cb8dda90
|
|
7
|
+
data.tar.gz: 33399d6ee408a32882b3077fc88478527fc3a5d3ce2fd1bbd53e14e77df9ff5bb3668e6950b0720d636c30b8d029c1af5b775ca22959fe00dc1a6c60505ae227
|
data/README.md
CHANGED
|
@@ -8,6 +8,14 @@ Down is a wrapper around `open-uri` for safe downloading of remote files.
|
|
|
8
8
|
gem 'down'
|
|
9
9
|
```
|
|
10
10
|
|
|
11
|
+
## Usage
|
|
12
|
+
|
|
13
|
+
```rb
|
|
14
|
+
require "down"
|
|
15
|
+
tempfile = Down.download("http://example.com/nature.jpg")
|
|
16
|
+
tempfile #=> #<Tempfile:/var/folders/k7/6zx6dx6x7ys3rv3srh0nyfj00000gn/T/20150925-55456-z7vxqz.jpg>
|
|
17
|
+
```
|
|
18
|
+
|
|
11
19
|
## Features
|
|
12
20
|
|
|
13
21
|
If you're downloading files from URLs that come from you, then it's probably
|
|
@@ -37,7 +45,7 @@ adds `#original_filename` as well, which is extracted from the URL.
|
|
|
37
45
|
require "down"
|
|
38
46
|
tempfile = Down.download("http://example.com/nature.jpg")
|
|
39
47
|
|
|
40
|
-
tempfile #=> #<Tempfile:/var/folders/k7/6zx6dx6x7ys3rv3srh0nyfj00000gn/T/20150925-55456-z7vxqz>
|
|
48
|
+
tempfile #=> #<Tempfile:/var/folders/k7/6zx6dx6x7ys3rv3srh0nyfj00000gn/T/20150925-55456-z7vxqz.jpg>
|
|
41
49
|
tempfile.content_type #=> "image/jpeg"
|
|
42
50
|
tempfile.original_filename #=> "nature.jpg"
|
|
43
51
|
```
|
|
@@ -91,6 +99,15 @@ You can specify the time after the request will time out:
|
|
|
91
99
|
Down.download "http://example.com/image.jpg", timeout: 5
|
|
92
100
|
```
|
|
93
101
|
|
|
102
|
+
### Additional options
|
|
103
|
+
|
|
104
|
+
Any additional options will be forwarded to open-uri, so you can for example
|
|
105
|
+
add basic authentication:
|
|
106
|
+
|
|
107
|
+
```rb
|
|
108
|
+
Down.download "http://example.com/image.jpg", http_basic_authentication: ['john', 'secret']
|
|
109
|
+
```
|
|
110
|
+
|
|
94
111
|
### Copying to tempfile
|
|
95
112
|
|
|
96
113
|
Down has another "hidden" utility method, `#copy_to_tempfile`, which creates
|
data/down.gemspec
CHANGED
data/lib/down.rb
CHANGED
|
@@ -13,18 +13,22 @@ module Down
|
|
|
13
13
|
def download(url, options = {})
|
|
14
14
|
url = URI.encode(URI.decode(url))
|
|
15
15
|
|
|
16
|
-
|
|
16
|
+
max_size = options.delete(:max_size)
|
|
17
|
+
progress = options.delete(:progress)
|
|
18
|
+
timeout = options.delete(:timeout)
|
|
19
|
+
|
|
20
|
+
downloaded_file = URI(url).open({
|
|
17
21
|
"User-Agent" => "Down/1.0.0",
|
|
18
22
|
content_length_proc: proc { |size|
|
|
19
|
-
raise Down::TooLarge if size &&
|
|
23
|
+
raise Down::TooLarge if size && max_size && size > max_size
|
|
20
24
|
},
|
|
21
25
|
progress_proc: proc { |current_size|
|
|
22
|
-
raise Down::TooLarge if
|
|
23
|
-
|
|
26
|
+
raise Down::TooLarge if max_size && current_size > max_size
|
|
27
|
+
progress.call(current_size) if progress
|
|
24
28
|
},
|
|
25
|
-
read_timeout:
|
|
29
|
+
read_timeout: timeout,
|
|
26
30
|
redirect: false,
|
|
27
|
-
)
|
|
31
|
+
}.merge(options))
|
|
28
32
|
|
|
29
33
|
# open-uri will return a StringIO instead of a Tempfile if the filesize is
|
|
30
34
|
# less than 10 KB, so if it happens we convert it back to Tempfile. We want
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: down
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.0
|
|
4
|
+
version: 1.1.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Janko Marohnić
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2016-01-26 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rake
|