browse-everything 1.0.0 → 1.0.1
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/.gitignore +1 -0
- data/app/views/browse_everything/_files.html.erb +1 -0
- data/browse-everything.gemspec +1 -1
- data/lib/browse_everything/driver/box.rb +10 -3
- data/lib/browse_everything/driver/dropbox.rb +2 -1
- data/lib/browse_everything/driver/file_system.rb +17 -5
- data/lib/browse_everything/driver/google_drive.rb +2 -1
- data/lib/browse_everything/driver/s3.rb +18 -2
- data/lib/browse_everything/version.rb +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5c44e6fe17fdd953916e2e9daee9dc2923123e3aa8b16e1b2413714e5c7e10a0
|
4
|
+
data.tar.gz: 05656d696be1683da78311011c2274ab422186d072c4005b32ceee87b63d3264
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cb7a332399ae1928ea4883ea8931b72410edd3f5b2ce59527f50b3df6c2b0e620812e58c742f09f0386c8f077ef3ae836bf379227287c82d94a32274b1f759c0
|
7
|
+
data.tar.gz: a036a93cb63e5880323cbe5bf9a505e5f7289926ab392029254f463b62993eb88f4c40351238ad98af299f5612727dee47d00419128c5cc79d6c6a4f9850bc88
|
data/.gitignore
CHANGED
@@ -9,6 +9,7 @@
|
|
9
9
|
</tr>
|
10
10
|
</thead>
|
11
11
|
<% provider_contents.each_with_index do |file, index| %>
|
12
|
+
<% next if file.nil? %>
|
12
13
|
<% path = browse_everything_engine.contents_path(provider_name, file.id) %>
|
13
14
|
<% parent = params[:parent] %>
|
14
15
|
<% if file.container? || provider.config[:max_upload_file_size].blank? %>
|
data/browse-everything.gemspec
CHANGED
@@ -32,7 +32,7 @@ Gem::Specification.new do |spec|
|
|
32
32
|
spec.add_dependency 'typhoeus'
|
33
33
|
|
34
34
|
spec.add_development_dependency 'bixby', '>= 1.0'
|
35
|
-
spec.add_development_dependency 'bundler', '
|
35
|
+
spec.add_development_dependency 'bundler', '>= 1.3'
|
36
36
|
spec.add_development_dependency 'capybara'
|
37
37
|
spec.add_development_dependency 'chromedriver-helper', '~> 2.1'
|
38
38
|
spec.add_development_dependency 'coveralls'
|
@@ -33,15 +33,18 @@ module BrowseEverything
|
|
33
33
|
raise InitializationError, 'Box driver requires both :client_id and :client_secret argument'
|
34
34
|
end
|
35
35
|
|
36
|
+
# Retrieves the file entry objects for a given path to Box resource
|
36
37
|
# @param [String] id of the file or folder in Box
|
37
|
-
# @return [Array<
|
38
|
+
# @return [Array<BrowseEverything::FileEntry>]
|
38
39
|
def contents(id = '')
|
39
40
|
folder = id.empty? ? box_client.root_folder : box_client.folder_by_id(id)
|
40
|
-
|
41
|
+
values = []
|
41
42
|
|
42
43
|
folder.items(ITEM_LIMIT, 0, %w[name size created_at]).collect do |f|
|
43
|
-
|
44
|
+
values << directory_entry(f)
|
44
45
|
end
|
46
|
+
@entries = values.compact
|
47
|
+
|
45
48
|
@sorter.call(@entries)
|
46
49
|
end
|
47
50
|
|
@@ -133,6 +136,10 @@ module BrowseEverything
|
|
133
136
|
@token.fetch('expires_at', nil).to_i
|
134
137
|
end
|
135
138
|
|
139
|
+
# Constructs a BrowseEverything::FileEntry object for a Box file
|
140
|
+
# resource
|
141
|
+
# @param file [String] ID to the file resource
|
142
|
+
# @return [BrowseEverything::File]
|
136
143
|
def directory_entry(file)
|
137
144
|
BrowseEverything::FileEntry.new(file.id, "#{key}:#{file.id}", file.name, file.size, file.created_at, file.type == 'folder')
|
138
145
|
end
|
@@ -83,7 +83,8 @@ module BrowseEverything
|
|
83
83
|
def contents(path = '')
|
84
84
|
path = '/' + path unless path == ''
|
85
85
|
response = client.list_folder(path)
|
86
|
-
|
86
|
+
values = response.entries.map { |entry| FileEntryFactory.build(metadata: entry, key: key) }
|
87
|
+
@entries = values.compact
|
87
88
|
@sorter.call(@entries)
|
88
89
|
end
|
89
90
|
|
@@ -11,13 +11,17 @@ module BrowseEverything
|
|
11
11
|
raise BrowseEverything::InitializationError, 'FileSystem driver requires a :home argument' if config[:home].blank?
|
12
12
|
end
|
13
13
|
|
14
|
+
# Retrieve the contents of a directory
|
15
|
+
# @param path [String] the path to a file system resource
|
16
|
+
# @return [Array<BrowseEverything::FileEntry>]
|
14
17
|
def contents(path = '')
|
15
18
|
real_path = File.join(config[:home], path)
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
19
|
+
values = if File.directory?(real_path)
|
20
|
+
make_directory_entry real_path
|
21
|
+
else
|
22
|
+
[details(real_path)]
|
23
|
+
end
|
24
|
+
@entries = values.compact
|
21
25
|
|
22
26
|
@sorter.call(@entries)
|
23
27
|
end
|
@@ -32,6 +36,10 @@ module BrowseEverything
|
|
32
36
|
true
|
33
37
|
end
|
34
38
|
|
39
|
+
# Construct a FileEntry objects for a file-system resource
|
40
|
+
# @param path [String] path to the file
|
41
|
+
# @param display [String] display label for the resource
|
42
|
+
# @return [BrowseEverything::FileEntry]
|
35
43
|
def details(path, display = File.basename(path))
|
36
44
|
return nil unless File.exist? path
|
37
45
|
info = File::Stat.new(path)
|
@@ -47,6 +55,10 @@ module BrowseEverything
|
|
47
55
|
|
48
56
|
private
|
49
57
|
|
58
|
+
# Construct an array of FileEntry objects for the contents of a
|
59
|
+
# directory
|
60
|
+
# @param real_path [String] path to the file system directory
|
61
|
+
# @return [Array<BrowseEverything::FileEntry>]
|
50
62
|
def make_directory_entry(real_path)
|
51
63
|
entries = []
|
52
64
|
entries + Dir[File.join(real_path, '*')].collect { |f| details(f) }
|
@@ -79,9 +79,10 @@ module BrowseEverything
|
|
79
79
|
raise error
|
80
80
|
end
|
81
81
|
|
82
|
-
|
82
|
+
values = file_list.files.map do |gdrive_file|
|
83
83
|
details(gdrive_file, path)
|
84
84
|
end
|
85
|
+
@entries += values.compact
|
85
86
|
|
86
87
|
request_params.page_token = file_list.next_page_token
|
87
88
|
end
|
@@ -113,23 +113,39 @@ module BrowseEverything
|
|
113
113
|
@client ||= authenticate
|
114
114
|
end
|
115
115
|
|
116
|
+
# Construct a BrowseEverything::FileEntry object
|
117
|
+
# @param name [String]
|
118
|
+
# @param size [String]
|
119
|
+
# @param date [DateTime]
|
120
|
+
# @param dir [String]
|
121
|
+
# @return [BrowseEverything::FileEntry]
|
116
122
|
def entry_for(name, size, date, dir)
|
117
123
|
BrowseEverything::FileEntry.new(name, [key, name].join(':'), File.basename(name), size, date, dir)
|
118
124
|
end
|
119
125
|
|
126
|
+
# Populate the entries with FileEntry objects from an S3 listing
|
127
|
+
# @param listing [Seahorse::Client::Response]
|
120
128
|
def add_directories(listing)
|
121
129
|
listing.common_prefixes.each do |prefix|
|
122
|
-
|
130
|
+
new_entry = entry_for(from_base(prefix.prefix), 0, Time.current, true)
|
131
|
+
@entries << new_entry unless new_entry.nil?
|
123
132
|
end
|
124
133
|
end
|
125
134
|
|
135
|
+
# Given a listing and a S3 listing and path, populate the entries
|
136
|
+
# @param listing [Seahorse::Client::Response]
|
137
|
+
# @param path [String]
|
126
138
|
def add_files(listing, path)
|
127
139
|
listing.contents.each do |entry|
|
128
140
|
key = from_base(entry.key)
|
129
|
-
|
141
|
+
new_entry = entry_for(key, entry.size, entry.last_modified, false)
|
142
|
+
@entries << new_entry unless strip(key) == strip(path) || new_entry.nil?
|
130
143
|
end
|
131
144
|
end
|
132
145
|
|
146
|
+
# For a given path to a S3 resource, retrieve the listing object and
|
147
|
+
# construct the file entries
|
148
|
+
# @param path [String]
|
133
149
|
def generate_listing(path)
|
134
150
|
client
|
135
151
|
listing = client.list_objects(bucket: config[:bucket], delimiter: '/', prefix: full_path(path))
|
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: 1.0.
|
4
|
+
version: 1.0.1
|
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: 2019-
|
16
|
+
date: 2019-04-23 00:00:00.000000000 Z
|
17
17
|
dependencies:
|
18
18
|
- !ruby/object:Gem::Dependency
|
19
19
|
name: addressable
|
@@ -187,14 +187,14 @@ dependencies:
|
|
187
187
|
name: bundler
|
188
188
|
requirement: !ruby/object:Gem::Requirement
|
189
189
|
requirements:
|
190
|
-
- - "
|
190
|
+
- - ">="
|
191
191
|
- !ruby/object:Gem::Version
|
192
192
|
version: '1.3'
|
193
193
|
type: :development
|
194
194
|
prerelease: false
|
195
195
|
version_requirements: !ruby/object:Gem::Requirement
|
196
196
|
requirements:
|
197
|
-
- - "
|
197
|
+
- - ">="
|
198
198
|
- !ruby/object:Gem::Version
|
199
199
|
version: '1.3'
|
200
200
|
- !ruby/object:Gem::Dependency
|