browse-everything 0.16.1 → 1.0.0.rc1
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 +5 -5
- data/.rubocop.yml +3 -0
- data/CODE_OF_CONDUCT.md +36 -0
- data/CONTRIBUTING.md +21 -19
- data/Gemfile +1 -0
- data/README.md +29 -9
- data/SUPPORT.md +5 -0
- data/app/controllers/browse_everything_controller.rb +7 -3
- data/app/views/browse_everything/_files.html.erb +14 -6
- data/app/views/browse_everything/index.html.erb +7 -1
- data/browse-everything.gemspec +5 -5
- data/lib/browse_everything/driver/base.rb +1 -1
- data/lib/browse_everything/driver/box.rb +4 -14
- data/lib/browse_everything/driver/dropbox.rb +34 -11
- data/lib/browse_everything/driver/google_drive.rb +2 -2
- data/lib/browse_everything/driver/s3.rb +8 -14
- data/lib/browse_everything/retriever.rb +4 -5
- data/lib/browse_everything/version.rb +1 -1
- data/lib/generators/browse_everything/templates/browse_everything_providers.yml.example +2 -2
- data/spec/controllers/browse_everything_controller_spec.rb +8 -1
- data/spec/lib/browse_everything/driver/box_spec.rb +114 -34
- data/spec/lib/browse_everything/driver/dropbox_spec.rb +53 -5
- data/spec/lib/browse_everything/driver/google_drive_spec.rb +41 -4
- data/spec/lib/browse_everything/driver/s3_spec.rb +27 -18
- data/spec/lib/browse_everything/retriever_spec.rb +65 -2
- data/spec/spec_helper.rb +4 -9
- data/spec/support/capybara.rb +14 -10
- metadata +31 -37
- data/spec/fixtures/vcr_cassettes/box.yml +0 -498
- data/spec/fixtures/vcr_cassettes/dropbox.yml +0 -282
- data/spec/fixtures/vcr_cassettes/google_drive.yml +0 -331
- data/spec/fixtures/vcr_cassettes/retriever.yml +0 -170
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
include BrowserConfigHelper
|
4
4
|
|
5
|
-
describe BrowseEverything::Driver::GoogleDrive
|
5
|
+
describe BrowseEverything::Driver::GoogleDrive do
|
6
6
|
let(:browser) { BrowseEverything::Browser.new(url_options) }
|
7
7
|
let(:provider) { browser.providers['google_drive'] }
|
8
8
|
let(:provider_yml) do
|
@@ -11,9 +11,27 @@ describe BrowseEverything::Driver::GoogleDrive, vcr: { cassette_name: 'google_dr
|
|
11
11
|
url_options: { port: '3000', protocol: 'http://', host: 'example.com' }
|
12
12
|
}
|
13
13
|
end
|
14
|
+
let(:oauth_response_body) do
|
15
|
+
'{
|
16
|
+
"access_token": "access-token",
|
17
|
+
"token_type": "Bearer",
|
18
|
+
"expires_in": 3600,
|
19
|
+
"refresh_token": "refresh-token"
|
20
|
+
}'
|
21
|
+
end
|
14
22
|
|
15
23
|
before do
|
16
24
|
stub_configuration
|
25
|
+
|
26
|
+
stub_request(
|
27
|
+
:post, 'https://oauth2.googleapis.com/token'
|
28
|
+
).to_return(
|
29
|
+
body: oauth_response_body,
|
30
|
+
status: 200,
|
31
|
+
headers: {
|
32
|
+
'Content-Type' => 'application/json; charset=UTF-8'
|
33
|
+
}
|
34
|
+
)
|
17
35
|
end
|
18
36
|
|
19
37
|
after do
|
@@ -30,11 +48,11 @@ describe BrowseEverything::Driver::GoogleDrive, vcr: { cassette_name: 'google_dr
|
|
30
48
|
|
31
49
|
describe '#validate_config' do
|
32
50
|
it 'raises and error with an incomplete configuration' do
|
33
|
-
expect {
|
51
|
+
expect { described_class.new({}) }.to raise_error(BrowseEverything::InitializationError)
|
34
52
|
end
|
35
53
|
|
36
54
|
it 'raises and error with a configuration without a client secret' do
|
37
|
-
expect {
|
55
|
+
expect { described_class.new(client_id: 'test-client-id') }.to raise_error(BrowseEverything::InitializationError)
|
38
56
|
end
|
39
57
|
end
|
40
58
|
|
@@ -69,7 +87,7 @@ describe BrowseEverything::Driver::GoogleDrive, vcr: { cassette_name: 'google_dr
|
|
69
87
|
let(:driver) { described_class.new(provider_yml) }
|
70
88
|
|
71
89
|
before do
|
72
|
-
driver.connect({ code: 'code' }, {})
|
90
|
+
driver.connect({ code: 'code' }, {}, nil)
|
73
91
|
end
|
74
92
|
|
75
93
|
describe '#authorized?' do
|
@@ -139,6 +157,25 @@ describe BrowseEverything::Driver::GoogleDrive, vcr: { cassette_name: 'google_dr
|
|
139
157
|
|
140
158
|
describe '#link_for' do
|
141
159
|
subject(:link) { driver.link_for('asset-id2') }
|
160
|
+
let(:file_response_body) do
|
161
|
+
'{
|
162
|
+
"id": "asset-id2",
|
163
|
+
"name": "asset-name2.pdf",
|
164
|
+
"webContentLink": "https://drive.google.com/uc?id=id&export=download"
|
165
|
+
}'
|
166
|
+
end
|
167
|
+
|
168
|
+
before do
|
169
|
+
stub_request(
|
170
|
+
:get, "https://www.googleapis.com/drive/v3/files/asset-id2?fields=id,%20name,%20size"
|
171
|
+
).to_return(
|
172
|
+
body: file_response_body,
|
173
|
+
status: 200,
|
174
|
+
headers: {
|
175
|
+
'Content-Type' => 'application/json'
|
176
|
+
}
|
177
|
+
)
|
178
|
+
end
|
142
179
|
|
143
180
|
it 'generates the link for a Google Drive asset' do
|
144
181
|
expect(link).to be_an Array
|
@@ -22,30 +22,46 @@ describe BrowseEverything::Driver::S3 do
|
|
22
22
|
end
|
23
23
|
|
24
24
|
describe 'configuration' do
|
25
|
-
it '
|
25
|
+
it 'rejects an empty config.' do
|
26
26
|
expect { described_class.new({}) }.to raise_error(BrowseEverything::InitializationError)
|
27
27
|
end
|
28
28
|
|
29
|
-
it 'rejects
|
29
|
+
it 'rejects a missing region' do
|
30
30
|
expect { described_class.new(bucket: 'bucket', app_key: 'APP_KEY') }.to raise_error(BrowseEverything::InitializationError)
|
31
31
|
end
|
32
32
|
|
33
|
+
it 'rejects app_key if app_secret is missing' do
|
34
|
+
expect { described_class.new(bucket: 'bucket', region: 'us-east-1', app_key: 'APP_KEY') }.to raise_error(BrowseEverything::InitializationError)
|
35
|
+
end
|
36
|
+
|
33
37
|
it 'rejects app_secret if app_key is missing' do
|
34
|
-
expect { described_class.new(bucket: 'bucket', app_secret: 'APP_SECRET') }.to raise_error(BrowseEverything::InitializationError)
|
38
|
+
expect { described_class.new(bucket: 'bucket', region: 'us-east-1', app_secret: 'APP_SECRET') }.to raise_error(BrowseEverything::InitializationError)
|
35
39
|
end
|
36
40
|
|
37
41
|
it 'accepts app_key and app_secret together' do
|
38
|
-
expect { described_class.new(bucket: 'bucket', app_key: 'APP_KEY', app_secret: 'APP_SECRET') }.not_to raise_error
|
42
|
+
expect { described_class.new(bucket: 'bucket', region: 'us-east-1', app_key: 'APP_KEY', app_secret: 'APP_SECRET') }.not_to raise_error
|
39
43
|
end
|
40
44
|
|
41
45
|
it 'rejects an invalid response type' do
|
42
|
-
expect { described_class.new(bucket: 'bucket', response_type: :foo) }.to raise_error(BrowseEverything::InitializationError)
|
46
|
+
expect { described_class.new(bucket: 'bucket', region: 'us-east-1', response_type: :foo) }.to raise_error(BrowseEverything::InitializationError)
|
43
47
|
end
|
44
48
|
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
+
context 'deprecating :signed_url' do
|
50
|
+
it 'sets the value of :signed_url to :response_type' do
|
51
|
+
driver = described_class.new(bucket: 'bucket', region: 'us-east-1', signed_url: false)
|
52
|
+
expect(driver.config).not_to have_key(:signed_url)
|
53
|
+
expect(driver.config[:response_type]).to eq(:public_url)
|
54
|
+
|
55
|
+
signed_driver = described_class.new(bucket: 'bucket', region: 'us-east-1', signed_url: true)
|
56
|
+
expect(signed_driver.config).not_to have_key(:signed_url)
|
57
|
+
expect(signed_driver.config[:response_type]).to eq(:signed_url)
|
58
|
+
end
|
59
|
+
|
60
|
+
it 'sets the default value of :response_type to :signed_url' do
|
61
|
+
driver = described_class.new(bucket: 'bucket', region: 'us-east-1')
|
62
|
+
expect(driver.config).not_to have_key(:signed_url)
|
63
|
+
expect(driver.config[:response_type]).to eq(:signed_url)
|
64
|
+
end
|
49
65
|
end
|
50
66
|
end
|
51
67
|
|
@@ -95,15 +111,8 @@ describe BrowseEverything::Driver::S3 do
|
|
95
111
|
|
96
112
|
let(:contents) { provider.contents('foo/') }
|
97
113
|
|
98
|
-
context 'with a single directory' do
|
99
|
-
subject { contents[0] }
|
100
|
-
|
101
|
-
its(:name) { is_expected.to eq('..') }
|
102
|
-
specify { is_expected.to be_container }
|
103
|
-
end
|
104
|
-
|
105
114
|
context 'with a JPEG asset' do
|
106
|
-
subject { contents[
|
115
|
+
subject { contents[0] }
|
107
116
|
|
108
117
|
its(:name) { is_expected.to eq('baz.jpg') }
|
109
118
|
its(:location) { is_expected.to eq('s3:foo/baz.jpg') }
|
@@ -113,7 +122,7 @@ describe BrowseEverything::Driver::S3 do
|
|
113
122
|
end
|
114
123
|
|
115
124
|
context 'with a PNG asset' do
|
116
|
-
subject { contents[
|
125
|
+
subject { contents[1] }
|
117
126
|
|
118
127
|
its(:name) { is_expected.to eq('quux.png') }
|
119
128
|
its(:location) { is_expected.to eq('s3:foo/quux.png') }
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
describe BrowseEverything::Retriever
|
3
|
+
describe BrowseEverything::Retriever do
|
4
4
|
let(:retriever) { described_class.new }
|
5
5
|
let(:datafile) { File.expand_path('../../fixtures/file_system/file_1.pdf', __dir__) }
|
6
6
|
let(:datafile_with_spaces) { File.expand_path('../../fixtures/file_system/file 1.pdf', __dir__) }
|
@@ -12,7 +12,7 @@ describe BrowseEverything::Retriever, vcr: { cassette_name: 'retriever', record:
|
|
12
12
|
subject(:computed_file_size) { retriever.file_size(options) }
|
13
13
|
|
14
14
|
let(:url) { URI.parse("file://#{datafile}") }
|
15
|
-
let(:headers) {
|
15
|
+
let(:headers) { {} }
|
16
16
|
let(:file_size) { 0 }
|
17
17
|
let(:options) do
|
18
18
|
{
|
@@ -31,6 +31,25 @@ describe BrowseEverything::Retriever, vcr: { cassette_name: 'retriever', record:
|
|
31
31
|
context 'when retrieving a resource from a cloud storage provider' do
|
32
32
|
let(:url) { URI.parse('https://drive.google.com/uc?id=id&export=download') }
|
33
33
|
|
34
|
+
before do
|
35
|
+
stub_request(
|
36
|
+
:head, "https://drive.google.com/uc?export=download&id=id"
|
37
|
+
).and_return(
|
38
|
+
headers: {
|
39
|
+
'Content-Length' => '1234'
|
40
|
+
}
|
41
|
+
)
|
42
|
+
|
43
|
+
stub_request(
|
44
|
+
:get, "https://drive.google.com/uc?export=download&id=id"
|
45
|
+
).and_return(
|
46
|
+
headers: {
|
47
|
+
'Content-Length' => '1234'
|
48
|
+
},
|
49
|
+
body: 'content'
|
50
|
+
)
|
51
|
+
end
|
52
|
+
|
34
53
|
it 'calculates or retrieves the size of a file' do
|
35
54
|
retriever.retrieve(options) do |_chunk, _retrieved, total|
|
36
55
|
expect(total).to eq 1234
|
@@ -80,6 +99,17 @@ describe BrowseEverything::Retriever, vcr: { cassette_name: 'retriever', record:
|
|
80
99
|
end
|
81
100
|
|
82
101
|
context 'when retrieving data using chunked-encoded streams' do
|
102
|
+
before do
|
103
|
+
stub_request(
|
104
|
+
:get, "https://retrieve.cloud.example.com/some/dir/file.pdf"
|
105
|
+
).and_return(
|
106
|
+
headers: {
|
107
|
+
'Content-Type' => 'text/plain'
|
108
|
+
},
|
109
|
+
body: data
|
110
|
+
)
|
111
|
+
end
|
112
|
+
|
83
113
|
it 'content' do
|
84
114
|
content = +''
|
85
115
|
retriever.retrieve(spec['0']) { |chunk, _retrieved, _total| content << chunk }
|
@@ -92,6 +122,17 @@ describe BrowseEverything::Retriever, vcr: { cassette_name: 'retriever', record:
|
|
92
122
|
end
|
93
123
|
|
94
124
|
context 'when downloading content' do
|
125
|
+
before do
|
126
|
+
stub_request(
|
127
|
+
:get, "https://retrieve.cloud.example.com/some/dir/file.pdf"
|
128
|
+
).and_return(
|
129
|
+
headers: {
|
130
|
+
'Content-Type' => 'text/plain'
|
131
|
+
},
|
132
|
+
body: data
|
133
|
+
)
|
134
|
+
end
|
135
|
+
|
95
136
|
it 'content' do
|
96
137
|
file = retriever.download(spec['0'])
|
97
138
|
expect(File.open(file, 'rb', &:read)).to eq(data)
|
@@ -115,6 +156,13 @@ describe BrowseEverything::Retriever, vcr: { cassette_name: 'retriever', record:
|
|
115
156
|
}
|
116
157
|
end
|
117
158
|
let(:download_options) { spec['0'] }
|
159
|
+
before do
|
160
|
+
stub_request(
|
161
|
+
:get, "https://retrieve.cloud.example.com/some/dir/file_error.pdf"
|
162
|
+
).and_return(
|
163
|
+
status: 403
|
164
|
+
)
|
165
|
+
end
|
118
166
|
|
119
167
|
it 'raises an exception' do
|
120
168
|
expect { retriever.download(download_options) }.to raise_error(BrowseEverything::DownloadError, /BrowseEverything::Retriever: Failed to download/)
|
@@ -184,6 +232,14 @@ describe BrowseEverything::Retriever, vcr: { cassette_name: 'retriever', record:
|
|
184
232
|
|
185
233
|
context 'when can retrieve' do
|
186
234
|
let(:url) { 'https://retrieve.cloud.example.com/some/dir/can_retrieve.pdf' }
|
235
|
+
before do
|
236
|
+
stub_request(
|
237
|
+
:get, "https://retrieve.cloud.example.com/some/dir/can_retrieve.pdf"
|
238
|
+
).to_return(
|
239
|
+
status: 206,
|
240
|
+
body: '%'
|
241
|
+
)
|
242
|
+
end
|
187
243
|
|
188
244
|
it 'says it can' do
|
189
245
|
expect(described_class).to be_can_retrieve(url)
|
@@ -192,6 +248,13 @@ describe BrowseEverything::Retriever, vcr: { cassette_name: 'retriever', record:
|
|
192
248
|
|
193
249
|
context 'when cannot retrieve' do
|
194
250
|
let(:url) { 'https://retrieve.cloud.example.com/some/dir/cannot_retrieve.pdf' }
|
251
|
+
before do
|
252
|
+
stub_request(
|
253
|
+
:get, "https://retrieve.cloud.example.com/some/dir/cannot_retrieve.pdf"
|
254
|
+
).to_return(
|
255
|
+
status: 403
|
256
|
+
)
|
257
|
+
end
|
195
258
|
|
196
259
|
it 'says it cannot' do
|
197
260
|
expect(described_class).not_to be_can_retrieve(url)
|
data/spec/spec_helper.rb
CHANGED
@@ -36,19 +36,13 @@ require 'capybara/rspec'
|
|
36
36
|
require 'rspec'
|
37
37
|
require 'rspec/rails'
|
38
38
|
require 'rspec/its'
|
39
|
-
require 'vcr'
|
40
|
-
require 'webmock/rspec'
|
41
39
|
|
42
40
|
# Requires supporting ruby files with custom matchers and macros, etc,
|
43
41
|
# in spec/support/ and its subdirectories.
|
44
42
|
Dir[Pathname.new(File.expand_path('support/**/*.rb', __dir__))].each { |f| require f }
|
45
43
|
|
46
|
-
|
47
|
-
|
48
|
-
c.hook_into :webmock
|
49
|
-
c.configure_rspec_metadata!
|
50
|
-
c.ignore_localhost = true
|
51
|
-
end
|
44
|
+
require 'webmock/rspec'
|
45
|
+
WebMock.disable_net_connect!(allow_localhost: true)
|
52
46
|
|
53
47
|
RSpec.configure do |config|
|
54
48
|
config.expect_with :rspec do |c|
|
@@ -85,7 +79,8 @@ module BrowserConfigHelper
|
|
85
79
|
's3' => {
|
86
80
|
app_key: 'S3AppKey',
|
87
81
|
app_secret: 'S3AppSecret',
|
88
|
-
bucket: 's3.bucket'
|
82
|
+
bucket: 's3.bucket',
|
83
|
+
region: 's3.region'
|
89
84
|
})
|
90
85
|
end
|
91
86
|
|
data/spec/support/capybara.rb
CHANGED
@@ -2,16 +2,20 @@
|
|
2
2
|
|
3
3
|
require 'selenium-webdriver'
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
5
|
+
# Temporary pin until chromedriver-helper patched to deal with change in chromedriver versioning
|
6
|
+
# See https://github.com/flavorjones/chromedriver-helper/pull/63
|
7
|
+
# @note In January 2018, TravisCI disabled Chrome sandboxing in its Linux
|
8
|
+
# container build environments to mitigate Meltdown/Spectre
|
9
|
+
# vulnerabilities, at which point Hyrax could no longer use the
|
10
|
+
# Capybara-provided :selenium_chrome_headless driver (which does not
|
11
|
+
# include the `--no-sandbox` argument).
|
12
|
+
Capybara.register_driver :selenium_chrome_headless_sandboxless do |app|
|
13
|
+
browser_options = ::Selenium::WebDriver::Chrome::Options.new
|
14
|
+
browser_options.args << '--headless'
|
15
|
+
browser_options.args << '--disable-gpu'
|
16
|
+
browser_options.args << '--no-sandbox'
|
17
|
+
Capybara::Selenium::Driver.new(app, browser: :chrome, options: browser_options)
|
15
18
|
end
|
16
19
|
|
17
20
|
Capybara.default_max_wait_time = 5
|
21
|
+
Capybara.javascript_driver = :selenium_chrome_headless_sandboxless
|
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.
|
4
|
+
version: 1.0.0.rc1
|
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: 2018-
|
16
|
+
date: 2018-11-06 00:00:00.000000000 Z
|
17
17
|
dependencies:
|
18
18
|
- !ruby/object:Gem::Dependency
|
19
19
|
name: addressable
|
@@ -91,14 +91,14 @@ dependencies:
|
|
91
91
|
requirements:
|
92
92
|
- - "~>"
|
93
93
|
- !ruby/object:Gem::Version
|
94
|
-
version: '0.
|
94
|
+
version: '0.23'
|
95
95
|
type: :runtime
|
96
96
|
prerelease: false
|
97
97
|
version_requirements: !ruby/object:Gem::Requirement
|
98
98
|
requirements:
|
99
99
|
- - "~>"
|
100
100
|
- !ruby/object:Gem::Version
|
101
|
-
version: '0.
|
101
|
+
version: '0.23'
|
102
102
|
- !ruby/object:Gem::Dependency
|
103
103
|
name: google_drive
|
104
104
|
requirement: !ruby/object:Gem::Requirement
|
@@ -119,14 +119,14 @@ dependencies:
|
|
119
119
|
requirements:
|
120
120
|
- - '='
|
121
121
|
- !ruby/object:Gem::Version
|
122
|
-
version: 0.6.
|
122
|
+
version: 0.6.6
|
123
123
|
type: :runtime
|
124
124
|
prerelease: false
|
125
125
|
version_requirements: !ruby/object:Gem::Requirement
|
126
126
|
requirements:
|
127
127
|
- - '='
|
128
128
|
- !ruby/object:Gem::Version
|
129
|
-
version: 0.6.
|
129
|
+
version: 0.6.6
|
130
130
|
- !ruby/object:Gem::Dependency
|
131
131
|
name: rails
|
132
132
|
requirement: !ruby/object:Gem::Requirement
|
@@ -189,14 +189,14 @@ dependencies:
|
|
189
189
|
requirements:
|
190
190
|
- - "~>"
|
191
191
|
- !ruby/object:Gem::Version
|
192
|
-
version: '0.
|
192
|
+
version: '0.19'
|
193
193
|
type: :runtime
|
194
194
|
prerelease: false
|
195
195
|
version_requirements: !ruby/object:Gem::Requirement
|
196
196
|
requirements:
|
197
197
|
- - "~>"
|
198
198
|
- !ruby/object:Gem::Version
|
199
|
-
version: '0.
|
199
|
+
version: '0.19'
|
200
200
|
- !ruby/object:Gem::Dependency
|
201
201
|
name: typhoeus
|
202
202
|
requirement: !ruby/object:Gem::Requirement
|
@@ -257,16 +257,16 @@ dependencies:
|
|
257
257
|
name: chromedriver-helper
|
258
258
|
requirement: !ruby/object:Gem::Requirement
|
259
259
|
requirements:
|
260
|
-
- -
|
260
|
+
- - '='
|
261
261
|
- !ruby/object:Gem::Version
|
262
|
-
version:
|
262
|
+
version: 1.2.0
|
263
263
|
type: :development
|
264
264
|
prerelease: false
|
265
265
|
version_requirements: !ruby/object:Gem::Requirement
|
266
266
|
requirements:
|
267
|
-
- -
|
267
|
+
- - '='
|
268
268
|
- !ruby/object:Gem::Version
|
269
|
-
version:
|
269
|
+
version: 1.2.0
|
270
270
|
- !ruby/object:Gem::Dependency
|
271
271
|
name: coveralls
|
272
272
|
requirement: !ruby/object:Gem::Requirement
|
@@ -323,6 +323,20 @@ dependencies:
|
|
323
323
|
- - "~>"
|
324
324
|
- !ruby/object:Gem::Version
|
325
325
|
version: '2.3'
|
326
|
+
- !ruby/object:Gem::Dependency
|
327
|
+
name: pry-byebug
|
328
|
+
requirement: !ruby/object:Gem::Requirement
|
329
|
+
requirements:
|
330
|
+
- - ">="
|
331
|
+
- !ruby/object:Gem::Version
|
332
|
+
version: '0'
|
333
|
+
type: :development
|
334
|
+
prerelease: false
|
335
|
+
version_requirements: !ruby/object:Gem::Requirement
|
336
|
+
requirements:
|
337
|
+
- - ">="
|
338
|
+
- !ruby/object:Gem::Version
|
339
|
+
version: '0'
|
326
340
|
- !ruby/object:Gem::Dependency
|
327
341
|
name: rails-controller-testing
|
328
342
|
requirement: !ruby/object:Gem::Requirement
|
@@ -449,20 +463,6 @@ dependencies:
|
|
449
463
|
- - ">="
|
450
464
|
- !ruby/object:Gem::Version
|
451
465
|
version: '0'
|
452
|
-
- !ruby/object:Gem::Dependency
|
453
|
-
name: vcr
|
454
|
-
requirement: !ruby/object:Gem::Requirement
|
455
|
-
requirements:
|
456
|
-
- - ">="
|
457
|
-
- !ruby/object:Gem::Version
|
458
|
-
version: '0'
|
459
|
-
type: :development
|
460
|
-
prerelease: false
|
461
|
-
version_requirements: !ruby/object:Gem::Requirement
|
462
|
-
requirements:
|
463
|
-
- - ">="
|
464
|
-
- !ruby/object:Gem::Version
|
465
|
-
version: '0'
|
466
466
|
- !ruby/object:Gem::Dependency
|
467
467
|
name: webmock
|
468
468
|
requirement: !ruby/object:Gem::Requirement
|
@@ -495,12 +495,14 @@ files:
|
|
495
495
|
- ".rubocop.yml"
|
496
496
|
- ".rubocop_todo.yml"
|
497
497
|
- ".travis.yml"
|
498
|
+
- CODE_OF_CONDUCT.md
|
498
499
|
- CONTRIBUTING.md
|
499
500
|
- Gemfile
|
500
501
|
- HISTORY.md
|
501
502
|
- LICENSE.txt
|
502
503
|
- README.md
|
503
504
|
- Rakefile
|
505
|
+
- SUPPORT.md
|
504
506
|
- app/assets/javascripts/browse_everything.js
|
505
507
|
- app/assets/javascripts/browse_everything/behavior.js.coffee
|
506
508
|
- app/assets/stylesheets/browse_everything.scss
|
@@ -552,10 +554,6 @@ files:
|
|
552
554
|
- spec/fixtures/file_system/dir_2/file_4.docx
|
553
555
|
- spec/fixtures/file_system/file 1.pdf
|
554
556
|
- spec/fixtures/file_system/file_1.pdf
|
555
|
-
- spec/fixtures/vcr_cassettes/box.yml
|
556
|
-
- spec/fixtures/vcr_cassettes/dropbox.yml
|
557
|
-
- spec/fixtures/vcr_cassettes/google_drive.yml
|
558
|
-
- spec/fixtures/vcr_cassettes/retriever.yml
|
559
557
|
- spec/helper/browse_everything_controller_helper_spec.rb
|
560
558
|
- spec/javascripts/behavior_spec.js
|
561
559
|
- spec/javascripts/helpers/jasmine-jquery.js
|
@@ -606,12 +604,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
606
604
|
version: '0'
|
607
605
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
608
606
|
requirements:
|
609
|
-
- - "
|
607
|
+
- - ">"
|
610
608
|
- !ruby/object:Gem::Version
|
611
|
-
version:
|
609
|
+
version: 1.3.1
|
612
610
|
requirements: []
|
613
611
|
rubyforge_project:
|
614
|
-
rubygems_version: 2.
|
612
|
+
rubygems_version: 2.6.14.1
|
615
613
|
signing_key:
|
616
614
|
specification_version: 4
|
617
615
|
summary: AJAX/Rails engine file browser for cloud storage services
|
@@ -625,10 +623,6 @@ test_files:
|
|
625
623
|
- spec/fixtures/file_system/dir_2/file_4.docx
|
626
624
|
- spec/fixtures/file_system/file 1.pdf
|
627
625
|
- spec/fixtures/file_system/file_1.pdf
|
628
|
-
- spec/fixtures/vcr_cassettes/box.yml
|
629
|
-
- spec/fixtures/vcr_cassettes/dropbox.yml
|
630
|
-
- spec/fixtures/vcr_cassettes/google_drive.yml
|
631
|
-
- spec/fixtures/vcr_cassettes/retriever.yml
|
632
626
|
- spec/helper/browse_everything_controller_helper_spec.rb
|
633
627
|
- spec/javascripts/behavior_spec.js
|
634
628
|
- spec/javascripts/helpers/jasmine-jquery.js
|