browse-everything 0.14.1 → 0.14.2
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
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bdca52f24c726e1a0a0b04200f2ec65359b3b16b
|
4
|
+
data.tar.gz: 181729d5c03b8c06773cbe1f2797e471ccaac5de
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 454cadb16e026a647559e5759042aeeaa04e724733053ea6f3215ec13bd4d35cca202249ac75b6b51f53e270a77dc9008065179f0b4e5c3913a6a64a2772af29
|
7
|
+
data.tar.gz: 4b4ce4d14208a57d43ec2462c96253f1a04c6546c40496bea0ab7c6450ddbbc997624035d30c18052d81a0c7db6e145877d13e8338863316febd624bea7c3199
|
@@ -9,7 +9,7 @@
|
|
9
9
|
</tr>
|
10
10
|
</thead>
|
11
11
|
<% provider.contents(browse_path).each_with_index do |file, index| %>
|
12
|
-
<% next if file.relative_parent_path? %>
|
12
|
+
<% next if file.relative_parent_path? or file.size.nil? %>
|
13
13
|
<%= render :partial => 'file', :locals => { :file => file, :index => index,
|
14
14
|
:path => browse_everything_engine.contents_path(provider_name, file.id), :parent => params[:parent] } %>
|
15
15
|
<% end %>
|
@@ -26,38 +26,68 @@ module BrowseEverything
|
|
26
26
|
target
|
27
27
|
end
|
28
28
|
|
29
|
-
def retrieve(spec)
|
29
|
+
def retrieve(spec, &block)
|
30
30
|
if spec.key?('expires') && Time.parse(spec['expires']) < Time.now
|
31
31
|
raise ArgumentError, "Download spec expired at #{spec['expires']}"
|
32
32
|
end
|
33
33
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
case url.scheme
|
34
|
+
parsed_spec = parse_spec(spec)
|
35
|
+
|
36
|
+
case parsed_spec[:url].scheme
|
38
37
|
when 'file'
|
39
|
-
|
38
|
+
retrieve_file(parsed_spec, &block)
|
39
|
+
when /https?/
|
40
|
+
retrieve_http(parsed_spec, &block)
|
41
|
+
else
|
42
|
+
raise URI::BadURIError, "Unknown URI scheme: #{parsed_spec[:url].scheme}"
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
private
|
47
|
+
|
48
|
+
def parse_spec(spec)
|
49
|
+
result = {
|
50
|
+
url: ::Addressable::URI.parse(spec['url']),
|
51
|
+
headers: spec['auth_header'] || {},
|
52
|
+
file_size: spec.fetch('file_size', 0).to_i
|
53
|
+
}
|
54
|
+
|
55
|
+
result[:headers].each_pair { |k, v| result[:headers][k] = v.tr('+', ' ') }
|
56
|
+
result[:file_size] = get_file_size(result) if result[:file_size] < 1
|
57
|
+
result
|
58
|
+
end
|
59
|
+
|
60
|
+
def retrieve_file(parsed_spec)
|
61
|
+
retrieved = 0
|
62
|
+
File.open(parsed_spec[:url].path, 'rb') do |f|
|
40
63
|
until f.eof?
|
41
64
|
chunk = f.read(chunk_size)
|
42
65
|
retrieved += chunk.length
|
43
|
-
yield(chunk, retrieved, file_size)
|
66
|
+
yield(chunk, retrieved, parsed_spec[:file_size])
|
44
67
|
end
|
45
68
|
end
|
46
|
-
|
47
|
-
headers = spec['auth_header'] || {}
|
48
|
-
headers.each_pair do |k, v|
|
49
|
-
headers[k] = v.tr('+', ' ')
|
50
|
-
end
|
69
|
+
end
|
51
70
|
|
52
|
-
|
71
|
+
def retrieve_http(parsed_spec)
|
72
|
+
retrieved = 0
|
73
|
+
stream_body = parsed_spec[:file_size] > 500.megabytes
|
53
74
|
|
54
|
-
HTTParty.get(url.to_s, stream_body: stream_body, headers: headers) do |chunk|
|
75
|
+
HTTParty.get(parsed_spec[:url].to_s, stream_body: stream_body, headers: parsed_spec[:headers]) do |chunk|
|
55
76
|
retrieved += chunk.length
|
56
|
-
yield(chunk, retrieved, file_size)
|
77
|
+
yield(chunk, retrieved, parsed_spec[:file_size])
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
def get_file_size(parsed_spec)
|
82
|
+
case parsed_spec[:url].scheme
|
83
|
+
when 'file'
|
84
|
+
File.size(url.path)
|
85
|
+
when /https?/
|
86
|
+
response = HTTParty.head(parsed_spec[:url].to_s, headers: parsed_spec[:headers])
|
87
|
+
response.content_length
|
88
|
+
else
|
89
|
+
raise URI::BadURIError, "Unknown URI scheme: #{url.scheme}"
|
57
90
|
end
|
58
|
-
else
|
59
|
-
raise URI::BadURIError, "Unknown URI scheme: #{url.scheme}"
|
60
91
|
end
|
61
|
-
end
|
62
92
|
end
|
63
93
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: browse-everything
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.14.
|
4
|
+
version: 0.14.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Carolyn Cole
|
@@ -13,7 +13,7 @@ authors:
|
|
13
13
|
autorequire:
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
|
-
date: 2017-09-
|
16
|
+
date: 2017-09-18 00:00:00.000000000 Z
|
17
17
|
dependencies:
|
18
18
|
- !ruby/object:Gem::Dependency
|
19
19
|
name: rails
|