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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: eedf3447096af5429b239653b707bf23e881fcd43a097cbe25804c7d48bc16e2
4
- data.tar.gz: 1ccf9adb1e189a413ae6ceb9a4e67bccfae3a5179c84f583c1b165f4e051cf00
3
+ metadata.gz: 64351da415814ba91aa2beebfc70fa27cbcc7c09ba0175f07425870b5ff4c364
4
+ data.tar.gz: 4908e6bd8ec3c2e6801fe112f3fc9458dd3ccb20b3c5e5a538a813659ddf9ea3
5
5
  SHA512:
6
- metadata.gz: 58511d9c04085a4a9d72246c906bb20cb46bac2e980d17bf90276807b67fe4c38eab79dbae89c10a69e735da6ee2e0acffe0399fe7993526a0454886cc3555ee
7
- data.tar.gz: 5484761c6ed0b148ba8a10852dea363a1c6860b146271dd0b8bedbad65f37dfb50b0644f3da2ae533c0b84c782fadea9d808f8d1f2d10d1acb00e3ee8f9d6b34
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
@@ -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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module BrowseEverything
4
- VERSION = '1.6.0'
4
+ VERSION = '2.0.0.alpha.1'
5
5
  end
@@ -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
@@ -1,4 +1,6 @@
1
1
  # frozen_string_literal: true
2
+ #
3
+ require 'browse_everything/driver/dropbox'
2
4
 
3
5
  require File.expand_path('../spec_helper', __dir__)
4
6
 
@@ -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'\ndropbox:\n client_id: 'DropboxId'\n client_secret: 'DropboxClientSecret'\n download_directory: 'tmp/'"
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
- dropbox: {
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
- dropbox: {
29
- client_id: 'DropboxId',
30
- client_secret: 'DropboxClientSecret',
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 dropbox])
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[:dropbox]).to be_a BrowseEverything::Driver::Dropbox
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 dropbox])
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[:dropbox]).to be_a BrowseEverything::Driver::Dropbox
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 dropbox])
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[:dropbox]).to be_a BrowseEverything::Driver::Dropbox
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
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'browse_everything/driver/box'
4
+
3
5
  include BrowserConfigHelper
4
6
 
5
7
  describe BrowseEverything::Driver::Box do
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'browse_everything/driver/dropbox'
4
+
3
5
  include BrowserConfigHelper
4
6
 
5
7
  describe BrowseEverything::Driver::Dropbox 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: 1.6.0
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