browse-everything 1.6.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 +4 -0
- data/README.md +25 -0
- data/browse-everything.gemspec +0 -3
- data/lib/browse_everything/driver/box.rb +8 -1
- data/lib/browse_everything/driver/dropbox.rb +9 -1
- 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
- metadata +1 -43
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
|
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,12 +20,9 @@ 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 'ruby-box'
|
28
|
-
spec.add_dependency 'signet', '~> 0.8'
|
29
26
|
spec.add_dependency 'faraday', "~> 2.0"
|
30
27
|
|
31
28
|
# Development dependencies include dependencies necessary for running
|
@@ -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
|
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
|
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
|
@@ -42,20 +42,6 @@ dependencies:
|
|
42
42
|
- - ">="
|
43
43
|
- !ruby/object:Gem::Version
|
44
44
|
version: '0'
|
45
|
-
- !ruby/object:Gem::Dependency
|
46
|
-
name: dropbox_api
|
47
|
-
requirement: !ruby/object:Gem::Requirement
|
48
|
-
requirements:
|
49
|
-
- - ">="
|
50
|
-
- !ruby/object:Gem::Version
|
51
|
-
version: 0.1.20
|
52
|
-
type: :runtime
|
53
|
-
prerelease: false
|
54
|
-
version_requirements: !ruby/object:Gem::Requirement
|
55
|
-
requirements:
|
56
|
-
- - ">="
|
57
|
-
- !ruby/object:Gem::Version
|
58
|
-
version: 0.1.20
|
59
45
|
- !ruby/object:Gem::Dependency
|
60
46
|
name: google-apis-drive_v3
|
61
47
|
requirement: !ruby/object:Gem::Requirement
|
@@ -110,34 +96,6 @@ dependencies:
|
|
110
96
|
- - "<"
|
111
97
|
- !ruby/object:Gem::Version
|
112
98
|
version: '8.1'
|
113
|
-
- !ruby/object:Gem::Dependency
|
114
|
-
name: ruby-box
|
115
|
-
requirement: !ruby/object:Gem::Requirement
|
116
|
-
requirements:
|
117
|
-
- - ">="
|
118
|
-
- !ruby/object:Gem::Version
|
119
|
-
version: '0'
|
120
|
-
type: :runtime
|
121
|
-
prerelease: false
|
122
|
-
version_requirements: !ruby/object:Gem::Requirement
|
123
|
-
requirements:
|
124
|
-
- - ">="
|
125
|
-
- !ruby/object:Gem::Version
|
126
|
-
version: '0'
|
127
|
-
- !ruby/object:Gem::Dependency
|
128
|
-
name: signet
|
129
|
-
requirement: !ruby/object:Gem::Requirement
|
130
|
-
requirements:
|
131
|
-
- - "~>"
|
132
|
-
- !ruby/object:Gem::Version
|
133
|
-
version: '0.8'
|
134
|
-
type: :runtime
|
135
|
-
prerelease: false
|
136
|
-
version_requirements: !ruby/object:Gem::Requirement
|
137
|
-
requirements:
|
138
|
-
- - "~>"
|
139
|
-
- !ruby/object:Gem::Version
|
140
|
-
version: '0.8'
|
141
99
|
- !ruby/object:Gem::Dependency
|
142
100
|
name: faraday
|
143
101
|
requirement: !ruby/object:Gem::Requirement
|