browse-everything 1.5.0 → 2.0.0.alpha.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/Gemfile +15 -6
- data/README.md +25 -0
- data/browse-everything.gemspec +1 -4
- data/lib/browse_everything/driver/box.rb +8 -1
- data/lib/browse_everything/driver/dropbox.rb +9 -1
- data/lib/browse_everything/driver/google_drive.rb +1 -1
- data/lib/browse_everything/retriever.rb +23 -17
- data/lib/browse_everything/version.rb +1 -1
- data/lib/browse_everything.rb +4 -2
- data/lib/generators/browse_everything/templates/browse_everything_providers.yml.example +20 -7
- data/spec/helper/browse_everything_controller_helper_spec.rb +2 -0
- data/spec/lib/browse_everything/browser_spec.rb +11 -11
- data/spec/lib/browse_everything/driver/box_spec.rb +2 -0
- data/spec/lib/browse_everything/driver/dropbox_spec.rb +2 -0
- data/spec/lib/browse_everything/retriever_spec.rb +5 -4
- metadata +6 -51
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 64351da415814ba91aa2beebfc70fa27cbcc7c09ba0175f07425870b5ff4c364
|
4
|
+
data.tar.gz: 4908e6bd8ec3c2e6801fe112f3fc9458dd3ccb20b3c5e5a538a813659ddf9ea3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1d14bf7d52f5d04fcffda8ced44b90c78aab2f9288b059a930b0c7a3c183a1b0a3c3be13ad2dc4e1e8bb780fc9744078a08ecea3988d92d3e1d6931956618fcd
|
7
|
+
data.tar.gz: 24ee1844450045c9985514d9f06e3db47f5275fe8ce9d2e0104e86af39a0adb931628e25e68b1dfb25fc7d9d4dc523ba73264aff12baae10df69c3573950fb4a
|
data/Gemfile
CHANGED
@@ -9,6 +9,10 @@ group :development, :test do
|
|
9
9
|
gem 'pry-byebug' unless ENV['CI']
|
10
10
|
end
|
11
11
|
|
12
|
+
# "soft"/"optional" dependency, but needed for our tests of dropbox driver to pass
|
13
|
+
gem 'dropbox_api', '>= 0.1.20'
|
14
|
+
gem 'ruby-box'
|
15
|
+
|
12
16
|
# == Extra dependencies for dummy test app ==
|
13
17
|
#
|
14
18
|
# Extra dependencies for dummy test app are in .gemspec as a development dependency
|
@@ -45,6 +49,10 @@ if ENV['RAILS_VERSION']
|
|
45
49
|
|
46
50
|
# sprockets is optional for rails 7, but we currently require it, and test with it.
|
47
51
|
gem "sprockets-rails"
|
52
|
+
|
53
|
+
# workaround bug in old rails
|
54
|
+
# https://github.com/rails/rails/pull/54264
|
55
|
+
gem "concurrent-ruby", "< 1.3.5"
|
48
56
|
when /^6\.1\./
|
49
57
|
# rails previous to 7.1 can't use sqlite 2
|
50
58
|
gem "sqlite3", "~> 1.4"
|
@@ -53,17 +61,18 @@ if ENV['RAILS_VERSION']
|
|
53
61
|
# Once mail 2.8.0 final is released this will not be required.
|
54
62
|
# https://github.com/mikel/mail/pull/1472
|
55
63
|
gem "mail", ">= 2.8.0.rc1"
|
64
|
+
|
65
|
+
# workaround bug in old rails
|
66
|
+
# https://github.com/rails/rails/pull/54264
|
67
|
+
gem "concurrent-ruby", "< 1.3.5"
|
56
68
|
when /^6\.0\./
|
57
69
|
# rails previous to 7.1 can't use sqlite 2
|
58
70
|
gem "sqlite3", "~> 1.4"
|
59
71
|
|
60
72
|
gem 'sass-rails', '>= 6'
|
61
|
-
when /^5\.[12]\./
|
62
|
-
# rails previous to 7.1 can't use sqlite 2
|
63
|
-
gem "sqlite3", "~> 1.4"
|
64
73
|
|
65
|
-
|
66
|
-
|
67
|
-
gem
|
74
|
+
# workaround bug in old rails
|
75
|
+
# https://github.com/rails/rails/pull/54264
|
76
|
+
gem "concurrent-ruby", "< 1.3.5"
|
68
77
|
end
|
69
78
|
end
|
data/README.md
CHANGED
@@ -24,6 +24,31 @@ download the files.
|
|
24
24
|
|
25
25
|
**This gem does not depend on hydra-head**
|
26
26
|
|
27
|
+
## Certain drivers needing maintenance require extra setup
|
28
|
+
|
29
|
+
Certain drivers need additional development work if they are to be fully
|
30
|
+
supported again, and for now require extra opt-in setup.
|
31
|
+
|
32
|
+
### Dropbox
|
33
|
+
|
34
|
+
The driver has a dependency on unmaintained dropbox_api gem with it's [own
|
35
|
+
dependency on old unmaintained `oauth2` 1.x](https://github.com/Jesus/dropbox_api/issues/96), so requires some opt-in setup and configuration. https://github.com/samvera/browse-everything/pull/448
|
36
|
+
|
37
|
+
* Add `dropbox_api, '>= 0.1.20'` to your Gemfile.
|
38
|
+
* Add `require 'browse_everything/driver/dropbox'` to a startup file, eg
|
39
|
+
`config/application.rb`.
|
40
|
+
|
41
|
+
### Box.com
|
42
|
+
|
43
|
+
The driver uses unmaintained [ruby-box](https://github.com/attachmentsme/ruby-box)
|
44
|
+
gem, which should probably be replaced with [boxr](https://github.com/cburnette/boxr).
|
45
|
+
See unfinished work at https://github.com/samvera/browse-everything/pull/185
|
46
|
+
|
47
|
+
* Add `ruby-box` to your Gemfile.
|
48
|
+
* Add `require 'browse_everything/driver/box'` to a startup file, eg
|
49
|
+
`config/application.rb`.
|
50
|
+
|
51
|
+
|
27
52
|
## Technical Debt/Legacy warning
|
28
53
|
|
29
54
|
This project has been receiving very limited maintenance for at least 2-4 years
|
data/browse-everything.gemspec
CHANGED
@@ -20,13 +20,10 @@ Gem::Specification.new do |spec|
|
|
20
20
|
|
21
21
|
spec.add_dependency 'addressable', '~> 2.5'
|
22
22
|
spec.add_dependency 'aws-sdk-s3'
|
23
|
-
spec.add_dependency 'dropbox_api', '>= 0.1.20'
|
24
23
|
spec.add_dependency 'google-apis-drive_v3'
|
25
24
|
spec.add_dependency 'googleauth', '>= 0.6.6', '< 2.0'
|
26
25
|
spec.add_dependency 'rails', '>= 4.2', '< 8.1'
|
27
|
-
spec.add_dependency '
|
28
|
-
spec.add_dependency 'signet', '~> 0.8'
|
29
|
-
spec.add_dependency 'typhoeus'
|
26
|
+
spec.add_dependency 'faraday', "~> 2.0"
|
30
27
|
|
31
28
|
# Development dependencies include dependencies necessary for running
|
32
29
|
# the dummy test app at ./spec/dummy_test_app
|
@@ -1,8 +1,15 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require 'ruby-box'
|
4
3
|
require_relative 'authentication_factory'
|
5
4
|
|
5
|
+
begin
|
6
|
+
gem 'ruby-box'
|
7
|
+
rescue Gem::LoadError => e
|
8
|
+
new_raise = Gem::LoadError.new("Loading BrowseEverything::Driver:Box requires the availability of gem ruby-box #{e.requirement}, please add it to your Gemfile")
|
9
|
+
new_raise.requirement = e.requirement
|
10
|
+
raise new_raise, cause: nil # cause is confusing and unneeded here.
|
11
|
+
end
|
12
|
+
|
6
13
|
module BrowseEverything
|
7
14
|
module Driver
|
8
15
|
# Driver for accessing the Box API (https://www.box.com/home)
|
@@ -1,9 +1,17 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require 'tmpdir'
|
4
|
-
require 'dropbox_api'
|
5
4
|
require_relative 'authentication_factory'
|
6
5
|
|
6
|
+
# We have an unspecified "optional" dependency, not great but it's what we got
|
7
|
+
begin
|
8
|
+
gem 'dropbox_api', '>= 0.1.20'
|
9
|
+
rescue Gem::LoadError => e
|
10
|
+
new_raise = Gem::LoadError.new("Loading BrowseEverything::Driver:Dropbox requires the availability of gem dropbox_api '#{e.requirement}', please add it to your Gemfile")
|
11
|
+
new_raise.requirement = e.requirement
|
12
|
+
raise new_raise, cause: nil # cause is confusing and unneeded here.
|
13
|
+
end
|
14
|
+
|
7
15
|
module BrowseEverything
|
8
16
|
module Driver
|
9
17
|
class Dropbox < Base
|
@@ -70,7 +70,7 @@ module BrowseEverything
|
|
70
70
|
# @param path [String] the path (default to the root)
|
71
71
|
# @return [Array<BrowseEverything::FileEntry>] file entries for the path
|
72
72
|
def list_files(drive, request_params, path: '')
|
73
|
-
drive.list_files(request_params.to_h) do |file_list, error|
|
73
|
+
drive.list_files(**request_params.to_h) do |file_list, error|
|
74
74
|
# Raise an exception if there was an error Google API's
|
75
75
|
if error.present?
|
76
76
|
# In order to properly trigger reauthentication, the token must be cleared
|
@@ -2,25 +2,25 @@
|
|
2
2
|
|
3
3
|
require 'addressable'
|
4
4
|
require 'tempfile'
|
5
|
-
require '
|
5
|
+
require 'faraday'
|
6
6
|
|
7
7
|
module BrowseEverything
|
8
8
|
# Class for raising errors when a download is invalid
|
9
9
|
class DownloadError < StandardError
|
10
|
-
|
10
|
+
attr_accessor :response_body
|
11
11
|
|
12
12
|
# Constructor
|
13
13
|
# @param msg [String]
|
14
|
-
# @param response [
|
15
|
-
def initialize(msg,
|
16
|
-
@
|
14
|
+
# @param response [String] response from the server
|
15
|
+
def initialize(msg, response_body)
|
16
|
+
@response_body = response_body
|
17
17
|
super(msg)
|
18
18
|
end
|
19
19
|
|
20
20
|
# Generate the message for the exception
|
21
21
|
# @return [String]
|
22
22
|
def message
|
23
|
-
"#{super}: #{
|
23
|
+
"#{super}: #{response_body}"
|
24
24
|
end
|
25
25
|
end
|
26
26
|
|
@@ -36,7 +36,7 @@ module BrowseEverything
|
|
36
36
|
# @param headers [Hash] any custom headers required to transit the request
|
37
37
|
def can_retrieve?(uri, headers = {})
|
38
38
|
request_headers = headers.merge(Range: 'bytes=0-0')
|
39
|
-
response =
|
39
|
+
response = Faraday.get(uri, headers: request_headers)
|
40
40
|
response.success?
|
41
41
|
end
|
42
42
|
end
|
@@ -133,17 +133,23 @@ module BrowseEverything
|
|
133
133
|
file_size = options.fetch(:file_size)
|
134
134
|
headers = options.fetch(:headers)
|
135
135
|
url = options.fetch(:url)
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
136
|
+
error_response = +""
|
137
|
+
|
138
|
+
conn = Faraday.new(url.to_s, headers: headers)
|
139
|
+
response = conn.get do |req|
|
140
|
+
req.options.on_data = proc do |chunk, overall_received_bytes, env|
|
141
|
+
if env.status == 200
|
142
|
+
# will yield to block passed in to outer retrieve_http, amazing.
|
143
|
+
yield(chunk, overall_received_bytes, file_size)
|
144
|
+
else
|
145
|
+
error_response << chunk
|
146
|
+
end
|
147
|
+
end
|
141
148
|
end
|
142
|
-
|
143
|
-
|
144
|
-
|
149
|
+
|
150
|
+
unless response.status == 200
|
151
|
+
raise DownloadError.new("#{self.class}: Failed to download #{url}: Status Code: #{response.status}", error_response)
|
145
152
|
end
|
146
|
-
request.run
|
147
153
|
end
|
148
154
|
|
149
155
|
# Retrieve the file size
|
@@ -158,7 +164,7 @@ module BrowseEverything
|
|
158
164
|
when 'file'
|
159
165
|
File.size(url.path)
|
160
166
|
when /https?/
|
161
|
-
response =
|
167
|
+
response = Faraday.head(url.to_s, headers: headers)
|
162
168
|
length_value = response.headers['Content-Length'] || file_size
|
163
169
|
length_value.to_i
|
164
170
|
else
|
data/lib/browse_everything.rb
CHANGED
@@ -12,11 +12,13 @@ module BrowseEverything
|
|
12
12
|
module Driver
|
13
13
|
autoload :Base, 'browse_everything/driver/base'
|
14
14
|
autoload :FileSystem, 'browse_everything/driver/file_system'
|
15
|
-
autoload :Dropbox, 'browse_everything/driver/dropbox'
|
16
|
-
autoload :Box, 'browse_everything/driver/box'
|
17
15
|
autoload :GoogleDrive, 'browse_everything/driver/google_drive'
|
18
16
|
autoload :S3, 'browse_everything/driver/s3'
|
19
17
|
|
18
|
+
# Intentionally require explicit require, as it has a non-declared dependency
|
19
|
+
# autoload :Dropbox, 'browse_everything/driver/dropbox'
|
20
|
+
# autoload :Box, 'browse_everything/driver/box'
|
21
|
+
|
20
22
|
# Access the sorter set for the base driver class
|
21
23
|
# @return [Proc]
|
22
24
|
def sorter
|
@@ -2,16 +2,10 @@
|
|
2
2
|
# To make browse-everything aware of a provider, uncomment the info for that provider and add your API key information.
|
3
3
|
# The file_system provider can be a path to any directory on the server where your application is running.
|
4
4
|
#
|
5
|
-
# dropbox:
|
6
|
-
# client_id: YOUR_DROPBOX_APP_KEY
|
7
|
-
# client_secret: YOUR_DROPBOX_APP_SECRET
|
8
|
-
# download_directory: tmp/
|
9
|
-
# box:
|
10
|
-
# client_id: YOUR_BOX_CLIENT_ID
|
11
|
-
# client_secret: YOUR_BOX_CLIENT_SECRET
|
12
5
|
# google_drive:
|
13
6
|
# client_id: YOUR_GOOGLE_API_CLIENT_ID
|
14
7
|
# client_secret: YOUR_GOOGLE_API_CLIENT_SECRET
|
8
|
+
#
|
15
9
|
# s3:
|
16
10
|
# bucket: YOUR_AWS_S3_BUCKET
|
17
11
|
# response_type: signed_url # set to :public_url for public urls or :s3_uri for an s3://BUCKET/KEY uri
|
@@ -20,3 +14,22 @@
|
|
20
14
|
# app_secret: YOUR_AWS_S3_SECRET # explicitly here, or left out to use system-configured
|
21
15
|
# region: YOUR_AWS_S3_REGION # defaults.
|
22
16
|
# See https://aws.amazon.com/blogs/security/a-new-and-standardized-way-to-manage-credentials-in-the-aws-sdks/
|
17
|
+
#
|
18
|
+
# file_system:
|
19
|
+
# allow_relative_home: true
|
20
|
+
# home: ./browseable_files
|
21
|
+
#
|
22
|
+
# # Note: dropbox requires manual addition of `dropbox_api` gem to Gemfile, and
|
23
|
+
# # `require 'browse_everything/driver/dropbox'` in a startup file.
|
24
|
+
#
|
25
|
+
# dropbox:
|
26
|
+
# client_id: YOUR_DROPBOX_APP_KEY
|
27
|
+
# client_secret: YOUR_DROPBOX_APP_SECRET
|
28
|
+
# download_directory: tmp/
|
29
|
+
#
|
30
|
+
# # Note: box requires addition of `ruby-box` to Gemfile, and
|
31
|
+
# # `require 'browse_everything/driver/box'` in a startup file.
|
32
|
+
#
|
33
|
+
# box:
|
34
|
+
# client_id: YOUR_BOX_CLIENT_ID
|
35
|
+
# client_secret: YOUR_BOX_CLIENT_SECRET
|
@@ -4,7 +4,7 @@ include BrowserConfigHelper
|
|
4
4
|
|
5
5
|
describe BrowseEverything::Browser do
|
6
6
|
let(:file_config) do
|
7
|
-
"file_system:\n home: '/file/config/home'\
|
7
|
+
"file_system:\n home: '/file/config/home'\ngoogle_drive:\n client_id: 'GoogleDriveId'\n client_secret: 'GoogleDriveClientSecret'\n download_directory: 'tmp/'"
|
8
8
|
end
|
9
9
|
|
10
10
|
let(:global_config) do
|
@@ -12,7 +12,7 @@ describe BrowseEverything::Browser do
|
|
12
12
|
file_system: {
|
13
13
|
home: '/global/config/home'
|
14
14
|
},
|
15
|
-
|
15
|
+
google_drive: {
|
16
16
|
client_id: 'DropboxId',
|
17
17
|
client_secret: 'DropboxClientSecret',
|
18
18
|
download_directory: 'tmp/'
|
@@ -25,9 +25,9 @@ describe BrowseEverything::Browser do
|
|
25
25
|
file_system: {
|
26
26
|
home: '/local/config/home'
|
27
27
|
},
|
28
|
-
|
29
|
-
client_id: '
|
30
|
-
client_secret: '
|
28
|
+
google_drive: {
|
29
|
+
client_id: 'GoogleDriveId',
|
30
|
+
client_secret: 'GoogleDriveClientSecret',
|
31
31
|
download_directory: 'tmp/'
|
32
32
|
},
|
33
33
|
url_options: url_options
|
@@ -43,9 +43,9 @@ describe BrowseEverything::Browser do
|
|
43
43
|
end
|
44
44
|
|
45
45
|
it 'has 2 providers' do
|
46
|
-
expect(browser.providers.keys).to eq(%w[file_system
|
46
|
+
expect(browser.providers.keys).to eq(%w[file_system google_drive])
|
47
47
|
expect(browser.providers[:file_system]).to be_a BrowseEverything::Driver::FileSystem
|
48
|
-
expect(browser.providers[:
|
48
|
+
expect(browser.providers[:google_drive]).to be_a BrowseEverything::Driver::GoogleDrive
|
49
49
|
end
|
50
50
|
|
51
51
|
it 'uses the file configuration' do
|
@@ -60,9 +60,9 @@ describe BrowseEverything::Browser do
|
|
60
60
|
before { BrowseEverything.configure(global_config) }
|
61
61
|
|
62
62
|
it 'has 2 providers' do
|
63
|
-
expect(browser.providers.keys).to eq(%w[file_system
|
63
|
+
expect(browser.providers.keys).to eq(%w[file_system google_drive])
|
64
64
|
expect(browser.providers[:file_system]).to be_a BrowseEverything::Driver::FileSystem
|
65
|
-
expect(browser.providers[:
|
65
|
+
expect(browser.providers[:google_drive]).to be_a BrowseEverything::Driver::GoogleDrive
|
66
66
|
end
|
67
67
|
|
68
68
|
it 'uses the global configuration' do
|
@@ -75,9 +75,9 @@ describe BrowseEverything::Browser do
|
|
75
75
|
let(:browser) { described_class.new(local_config) }
|
76
76
|
|
77
77
|
it 'has 2 providers' do
|
78
|
-
expect(browser.providers.keys).to eq(%w[file_system
|
78
|
+
expect(browser.providers.keys).to eq(%w[file_system google_drive])
|
79
79
|
expect(browser.providers[:file_system]).to be_a BrowseEverything::Driver::FileSystem
|
80
|
-
expect(browser.providers[:
|
80
|
+
expect(browser.providers[:google_drive]).to be_a BrowseEverything::Driver::GoogleDrive
|
81
81
|
end
|
82
82
|
|
83
83
|
it 'uses the local configuration' do
|
@@ -160,12 +160,13 @@ describe BrowseEverything::Retriever do
|
|
160
160
|
stub_request(
|
161
161
|
:get, "https://retrieve.cloud.example.com/some/dir/file_error.pdf"
|
162
162
|
).and_return(
|
163
|
-
status: 403
|
163
|
+
status: 403,
|
164
|
+
body: "Did not like this"
|
164
165
|
)
|
165
166
|
end
|
166
167
|
|
167
168
|
it 'raises an exception' do
|
168
|
-
expect { retriever.download(download_options) }.to raise_error(BrowseEverything::DownloadError, /BrowseEverything::Retriever: Failed to download/)
|
169
|
+
expect { retriever.download(download_options) }.to raise_error(BrowseEverything::DownloadError, /BrowseEverything::Retriever: Failed to download.* Status Code: 403.*Did not like this/)
|
169
170
|
end
|
170
171
|
end
|
171
172
|
end
|
@@ -234,7 +235,7 @@ describe BrowseEverything::Retriever do
|
|
234
235
|
let(:url) { 'https://retrieve.cloud.example.com/some/dir/can_retrieve.pdf' }
|
235
236
|
before do
|
236
237
|
stub_request(
|
237
|
-
:get,
|
238
|
+
:get, %r{^https://retrieve.cloud.example.com/some/dir/can_retrieve.pdf\?}
|
238
239
|
).to_return(
|
239
240
|
status: 206,
|
240
241
|
body: '%'
|
@@ -250,7 +251,7 @@ describe BrowseEverything::Retriever do
|
|
250
251
|
let(:url) { 'https://retrieve.cloud.example.com/some/dir/cannot_retrieve.pdf' }
|
251
252
|
before do
|
252
253
|
stub_request(
|
253
|
-
:get,
|
254
|
+
:get, %r{^https://retrieve.cloud.example.com/some/dir/cannot_retrieve.pdf\?}
|
254
255
|
).to_return(
|
255
256
|
status: 403
|
256
257
|
)
|
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:
|
4
|
+
version: 2.0.0.alpha.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Carolyn Cole
|
@@ -10,10 +10,9 @@ authors:
|
|
10
10
|
- Thomas Scherz
|
11
11
|
- Xiaoming Wang
|
12
12
|
- Jeremy Friesen
|
13
|
-
autorequire:
|
14
13
|
bindir: bin
|
15
14
|
cert_chain: []
|
16
|
-
date:
|
15
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
17
16
|
dependencies:
|
18
17
|
- !ruby/object:Gem::Dependency
|
19
18
|
name: addressable
|
@@ -43,20 +42,6 @@ dependencies:
|
|
43
42
|
- - ">="
|
44
43
|
- !ruby/object:Gem::Version
|
45
44
|
version: '0'
|
46
|
-
- !ruby/object:Gem::Dependency
|
47
|
-
name: dropbox_api
|
48
|
-
requirement: !ruby/object:Gem::Requirement
|
49
|
-
requirements:
|
50
|
-
- - ">="
|
51
|
-
- !ruby/object:Gem::Version
|
52
|
-
version: 0.1.20
|
53
|
-
type: :runtime
|
54
|
-
prerelease: false
|
55
|
-
version_requirements: !ruby/object:Gem::Requirement
|
56
|
-
requirements:
|
57
|
-
- - ">="
|
58
|
-
- !ruby/object:Gem::Version
|
59
|
-
version: 0.1.20
|
60
45
|
- !ruby/object:Gem::Dependency
|
61
46
|
name: google-apis-drive_v3
|
62
47
|
requirement: !ruby/object:Gem::Requirement
|
@@ -112,47 +97,19 @@ dependencies:
|
|
112
97
|
- !ruby/object:Gem::Version
|
113
98
|
version: '8.1'
|
114
99
|
- !ruby/object:Gem::Dependency
|
115
|
-
name:
|
116
|
-
requirement: !ruby/object:Gem::Requirement
|
117
|
-
requirements:
|
118
|
-
- - ">="
|
119
|
-
- !ruby/object:Gem::Version
|
120
|
-
version: '0'
|
121
|
-
type: :runtime
|
122
|
-
prerelease: false
|
123
|
-
version_requirements: !ruby/object:Gem::Requirement
|
124
|
-
requirements:
|
125
|
-
- - ">="
|
126
|
-
- !ruby/object:Gem::Version
|
127
|
-
version: '0'
|
128
|
-
- !ruby/object:Gem::Dependency
|
129
|
-
name: signet
|
100
|
+
name: faraday
|
130
101
|
requirement: !ruby/object:Gem::Requirement
|
131
102
|
requirements:
|
132
103
|
- - "~>"
|
133
104
|
- !ruby/object:Gem::Version
|
134
|
-
version: '0
|
105
|
+
version: '2.0'
|
135
106
|
type: :runtime
|
136
107
|
prerelease: false
|
137
108
|
version_requirements: !ruby/object:Gem::Requirement
|
138
109
|
requirements:
|
139
110
|
- - "~>"
|
140
111
|
- !ruby/object:Gem::Version
|
141
|
-
version: '0
|
142
|
-
- !ruby/object:Gem::Dependency
|
143
|
-
name: typhoeus
|
144
|
-
requirement: !ruby/object:Gem::Requirement
|
145
|
-
requirements:
|
146
|
-
- - ">="
|
147
|
-
- !ruby/object:Gem::Version
|
148
|
-
version: '0'
|
149
|
-
type: :runtime
|
150
|
-
prerelease: false
|
151
|
-
version_requirements: !ruby/object:Gem::Requirement
|
152
|
-
requirements:
|
153
|
-
- - ">="
|
154
|
-
- !ruby/object:Gem::Version
|
155
|
-
version: '0'
|
112
|
+
version: '2.0'
|
156
113
|
- !ruby/object:Gem::Dependency
|
157
114
|
name: bixby
|
158
115
|
requirement: !ruby/object:Gem::Requirement
|
@@ -616,7 +573,6 @@ homepage: https://github.com/projecthydra/browse-everything
|
|
616
573
|
licenses:
|
617
574
|
- Apache 2
|
618
575
|
metadata: {}
|
619
|
-
post_install_message:
|
620
576
|
rdoc_options: []
|
621
577
|
require_paths:
|
622
578
|
- lib
|
@@ -631,8 +587,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
631
587
|
- !ruby/object:Gem::Version
|
632
588
|
version: '0'
|
633
589
|
requirements: []
|
634
|
-
rubygems_version: 3.
|
635
|
-
signing_key:
|
590
|
+
rubygems_version: 3.7.1
|
636
591
|
specification_version: 4
|
637
592
|
summary: AJAX/Rails engine file browser for cloud storage services
|
638
593
|
test_files:
|