browse-everything 0.10.5 → 0.11.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/.rubocop.yml +16 -0
- data/.rubocop_todo.yml +149 -0
- data/.travis.yml +5 -6
- data/Rakefile +2 -2
- data/app/controllers/browse_everything_controller.rb +19 -22
- data/app/helpers/bootstrap_version_helper.rb +9 -11
- data/app/helpers/browse_everything_helper.rb +11 -22
- data/app/views/browse_everything/_file.html.erb +7 -11
- data/app/views/browse_everything/_files.html.erb +4 -7
- data/app/views/browse_everything/index.html.erb +1 -1
- data/browse-everything.gemspec +37 -34
- data/config/routes.rb +3 -3
- data/lib/browse-everything.rb +1 -1
- data/lib/browse_everything.rb +9 -8
- data/lib/browse_everything/browser.rb +4 -4
- data/lib/browse_everything/driver/base.rb +14 -14
- data/lib/browse_everything/driver/box.rb +48 -59
- data/lib/browse_everything/driver/dropbox.rb +10 -11
- data/lib/browse_everything/driver/file_system.rb +19 -24
- data/lib/browse_everything/driver/google_drive.rb +58 -82
- data/lib/browse_everything/driver/s3.rb +87 -0
- data/lib/browse_everything/driver/sky_drive.rb +41 -47
- data/lib/browse_everything/engine.rb +2 -2
- data/lib/browse_everything/file_entry.rb +3 -3
- data/lib/browse_everything/retriever.rb +19 -20
- data/lib/browse_everything/version.rb +1 -1
- data/lib/generators/browse_everything/assets_generator.rb +2 -4
- data/lib/generators/browse_everything/config_generator.rb +12 -12
- data/lib/generators/browse_everything/install_generator.rb +2 -4
- data/lib/generators/browse_everything/templates/browse_everything_providers.yml.example +6 -0
- data/spec/features/select_files_spec.rb +12 -12
- data/spec/features/test_compiling_stylesheets_spec.rb +2 -2
- data/spec/helper/browse_everything_controller_helper_spec.rb +8 -8
- data/spec/javascripts/jasmine_spec.rb +5 -5
- data/spec/javascripts/support/jasmine_helper.rb +9 -9
- data/spec/spec_helper.rb +26 -23
- data/spec/support/app/controllers/file_handler_controller.rb +3 -3
- data/spec/support/rake.rb +1 -1
- data/spec/test_app_templates/lib/generators/test_app_generator.rb +21 -22
- data/spec/unit/base_spec.rb +6 -6
- data/spec/unit/browse_everything_helper_spec.rb +9 -9
- data/spec/unit/browser_spec.rb +19 -19
- data/spec/unit/dropbox_spec.rb +44 -43
- data/spec/unit/file_entry_spec.rb +31 -31
- data/spec/unit/file_system_spec.rb +26 -26
- data/spec/unit/retriever_spec.rb +42 -43
- data/spec/unit/s3_spec.rb +77 -0
- data/spec/unit/sky_drive_spec.rb +31 -31
- data/spec/views/browse_everything/_file.html.erb_spec.rb +37 -37
- data/tasks/ci.rake +3 -3
- metadata +52 -7
- data/app/.DS_Store +0 -0
- data/app/views/.DS_Store +0 -0
data/spec/unit/retriever_spec.rb
CHANGED
@@ -1,94 +1,93 @@
|
|
1
|
-
describe BrowseEverything::Retriever, vcr: { cassette_name: 'retriever', record: :none
|
1
|
+
describe BrowseEverything::Retriever, vcr: { cassette_name: 'retriever', record: :none } do
|
2
2
|
subject { BrowseEverything::Retriever.new }
|
3
|
-
let(:datafile) { File.expand_path('../../fixtures/file_system/file_1.pdf',__FILE__) }
|
4
|
-
let(:datafile_with_spaces) { File.expand_path('../../fixtures/file_system/file 1.pdf',__FILE__) }
|
5
|
-
let(:data) { File.open(datafile,'rb'
|
3
|
+
let(:datafile) { File.expand_path('../../fixtures/file_system/file_1.pdf', __FILE__) }
|
4
|
+
let(:datafile_with_spaces) { File.expand_path('../../fixtures/file_system/file 1.pdf', __FILE__) }
|
5
|
+
let(:data) { File.open(datafile, 'rb', &:read) }
|
6
6
|
let(:data_with_spaces) { File.open(datafile_with_spaces, 'rb', &:read) }
|
7
7
|
let(:size) { File.size(datafile) }
|
8
8
|
|
9
9
|
context 'http://' do
|
10
|
-
let(:spec)
|
10
|
+
let(:spec) do
|
11
11
|
{
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
12
|
+
'0' => {
|
13
|
+
'url' => 'https://retrieve.cloud.example.com/some/dir/file.pdf',
|
14
|
+
'auth_header' => { 'Authorization' => 'Bearer ya29.kQCEAHj1bwFXr2AuGQJmSGRWQXpacmmYZs4kzCiXns3d6H1ZpIDWmdM8' },
|
15
|
+
'expires' => (Time.now + 3600).xmlschema,
|
16
|
+
'file_name' => 'file.pdf',
|
17
|
+
'file_size' => size.to_s
|
18
18
|
}
|
19
19
|
}
|
20
|
-
|
20
|
+
end
|
21
21
|
|
22
|
-
context
|
23
|
-
it
|
22
|
+
context '#retrieve' do
|
23
|
+
it 'content' do
|
24
24
|
content = ''
|
25
|
-
subject.retrieve(spec['0']) { |chunk,
|
25
|
+
subject.retrieve(spec['0']) { |chunk, _retrieved, _total| content << chunk }
|
26
26
|
expect(content).to eq(data)
|
27
27
|
end
|
28
28
|
|
29
|
-
it
|
29
|
+
it 'callbacks' do
|
30
30
|
expect { |block| subject.retrieve(spec['0'], &block) }.to yield_with_args(data, data.length, data.length)
|
31
31
|
end
|
32
32
|
end
|
33
33
|
|
34
|
-
context
|
35
|
-
it
|
34
|
+
context '#download' do
|
35
|
+
it 'content' do
|
36
36
|
file = subject.download(spec['0'])
|
37
|
-
expect(File.open(file,'rb'
|
37
|
+
expect(File.open(file, 'rb', &:read)).to eq(data)
|
38
38
|
end
|
39
39
|
|
40
|
-
it
|
40
|
+
it 'callbacks' do
|
41
41
|
expect { |block| subject.download(spec['0'], &block) }.to yield_with_args(String, data.length, data.length)
|
42
42
|
end
|
43
43
|
end
|
44
44
|
end
|
45
45
|
|
46
46
|
context 'file://' do
|
47
|
-
let(:spec)
|
47
|
+
let(:spec) do
|
48
48
|
{
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
49
|
+
'0' => {
|
50
|
+
'url' => "file://#{datafile}",
|
51
|
+
'file_name' => 'file.pdf',
|
52
|
+
'file_size' => size.to_s
|
53
53
|
},
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
54
|
+
'1' => {
|
55
|
+
'url' => "file://#{datafile_with_spaces}",
|
56
|
+
'file_name' => 'file.pdf',
|
57
|
+
'file_size' => size.to_s
|
58
|
+
}
|
59
59
|
}
|
60
|
-
|
60
|
+
end
|
61
61
|
|
62
|
-
context
|
63
|
-
it
|
62
|
+
context '#retrieve' do
|
63
|
+
it 'content' do
|
64
64
|
content = ''
|
65
|
-
subject.retrieve(spec['0']) { |chunk,
|
65
|
+
subject.retrieve(spec['0']) { |chunk, _retrieved, _total| content << chunk }
|
66
66
|
expect(content).to eq(data)
|
67
67
|
end
|
68
68
|
|
69
|
-
it
|
69
|
+
it 'content with spaces' do
|
70
70
|
content = ''
|
71
|
-
|
72
|
-
|
71
|
+
subject.retrieve(spec['1']) { |chunk, _retrieved, _total| content << chunk }
|
72
|
+
expect(content).to eq(data_with_spaces)
|
73
73
|
end
|
74
74
|
|
75
|
-
it
|
75
|
+
it 'callbacks' do
|
76
76
|
expect { |block| subject.retrieve(spec['0'], &block) }.to yield_with_args(data, data.length, data.length)
|
77
77
|
end
|
78
78
|
end
|
79
79
|
|
80
|
-
context
|
81
|
-
it
|
80
|
+
context '#download' do
|
81
|
+
it 'content' do
|
82
82
|
file = subject.download(spec['0'])
|
83
|
-
expect(File.open(file,'rb'
|
83
|
+
expect(File.open(file, 'rb', &:read)).to eq(data)
|
84
84
|
end
|
85
85
|
|
86
|
-
it
|
86
|
+
it 'callbacks' do
|
87
87
|
expect { |block| subject.download(spec['0'], &block) }.to yield_with_args(String, data.length, data.length)
|
88
88
|
end
|
89
89
|
end
|
90
90
|
end
|
91
91
|
|
92
92
|
context ''
|
93
|
-
|
94
93
|
end
|
@@ -0,0 +1,77 @@
|
|
1
|
+
include BrowserConfigHelper
|
2
|
+
|
3
|
+
describe BrowseEverything::Driver::FileSystem do
|
4
|
+
before(:all) { stub_configuration }
|
5
|
+
after(:all) { unstub_configuration }
|
6
|
+
let(:browser) { BrowseEverything::Browser.new(url_options) }
|
7
|
+
let(:provider) { browser.providers['s3'] }
|
8
|
+
|
9
|
+
it '#validate_config' do
|
10
|
+
expect { BrowseEverything::Driver::S3.new({}) }.to raise_error(BrowseEverything::InitializationError)
|
11
|
+
end
|
12
|
+
|
13
|
+
describe '#contents' do
|
14
|
+
context 'root directory' do
|
15
|
+
before do
|
16
|
+
Aws.config[:s3] = {
|
17
|
+
stub_responses: {
|
18
|
+
list_objects: { is_truncated: false, marker: "", next_marker: nil, contents: [], name: "s3.bucket", prefix: "", delimiter: "/", max_keys: 1000, common_prefixes: [ { prefix: 'foo/' }, { prefix: 'bar/'} ], encoding_type: "url" },
|
19
|
+
}
|
20
|
+
}
|
21
|
+
end
|
22
|
+
|
23
|
+
let(:contents) { provider.contents('') }
|
24
|
+
context '[0]' do
|
25
|
+
subject { contents[0] }
|
26
|
+
its(:name) { should == 'bar' }
|
27
|
+
specify { should be_container }
|
28
|
+
end
|
29
|
+
context '[1]' do
|
30
|
+
subject { contents[1] }
|
31
|
+
its(:name) { should == 'foo' }
|
32
|
+
specify { should be_container }
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
context 'subdirectory' do
|
37
|
+
before do
|
38
|
+
Aws.config[:s3] = {
|
39
|
+
stub_responses: {
|
40
|
+
list_objects:
|
41
|
+
{
|
42
|
+
is_truncated: false, marker: "", next_marker: nil, name: "s3.bucket", prefix: "foo/", delimiter: "/", max_keys: 1000, common_prefixes: [], encoding_type: "url",
|
43
|
+
contents: [
|
44
|
+
{ key: "foo/", last_modified: Time.parse('2014-02-03 16:27:01 UTC'), etag: "\"d41d8cd98f00b204e9800998ecf8427e\"", size: 0, storage_class: "STANDARD", owner: { display_name: "mbklein" } },
|
45
|
+
{ key: "foo/baz.jpg", last_modified: Time.parse('2016-10-31 20:12:32 UTC'), etag: "\"4e2ad532e659a65e8f106b350255a7ba\"", size: 52645, storage_class: "STANDARD", owner: { display_name: "mbklein" } },
|
46
|
+
{ key: "foo/quux.png", last_modified: Time.parse('2016-10-31 22:08:12 UTC'), etag: "\"a92bbe23736ebdbd37bdc795e7d570ad\"", size: 1511860, storage_class: "STANDARD", owner: { display_name: "mbklein" } }
|
47
|
+
]
|
48
|
+
}
|
49
|
+
}
|
50
|
+
}
|
51
|
+
end
|
52
|
+
|
53
|
+
let(:contents) { provider.contents('foo/') }
|
54
|
+
context '[0]' do
|
55
|
+
subject { contents[0] }
|
56
|
+
its(:name) { should == '..' }
|
57
|
+
specify { should be_container }
|
58
|
+
end
|
59
|
+
context '[1]' do
|
60
|
+
subject { contents[1] }
|
61
|
+
its(:name) { should == 'baz.jpg' }
|
62
|
+
its(:location) { should == "s3:foo/baz.jpg" }
|
63
|
+
its(:type) { should == 'image/jpeg' }
|
64
|
+
its(:size) { should == 52645 }
|
65
|
+
specify { should_not be_container }
|
66
|
+
end
|
67
|
+
context '[2]' do
|
68
|
+
subject { contents[2] }
|
69
|
+
its(:name) { should == 'quux.png' }
|
70
|
+
its(:location) { should == "s3:foo/quux.png" }
|
71
|
+
its(:type) { should == 'image/png' }
|
72
|
+
its(:size) { should == 1511860 }
|
73
|
+
specify { should_not be_container }
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
data/spec/unit/sky_drive_spec.rb
CHANGED
@@ -2,50 +2,50 @@ describe BrowseEverything::Driver::SkyDrive do
|
|
2
2
|
include BrowseEverything::Engine.routes.url_helpers
|
3
3
|
|
4
4
|
def provider_yml
|
5
|
-
{client_id:
|
5
|
+
{ client_id: 'CLIENTID', client_secret: 'CLIENTSECRET', url_options: { port: '3000', protocol: 'http://', host: 'example.com' } }
|
6
6
|
end
|
7
7
|
|
8
8
|
def redirect_url
|
9
9
|
connector_response_url(provider_yml[:url_options])
|
10
10
|
end
|
11
11
|
|
12
|
-
it
|
13
|
-
stub_request(:post,
|
14
|
-
with(:
|
15
|
-
to_return(:
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
12
|
+
it 'can connect' do
|
13
|
+
stub_request(:post, 'https://login.live.com/oauth20_token.srf')
|
14
|
+
.with(body: { 'client_id' => 'CLIENTID', 'client_secret' => 'CLIENTSECRET', 'code' => 'code', 'grant_type' => 'authorization_code', 'redirect_uri' => redirect_url.to_s })
|
15
|
+
.to_return(status: 200,
|
16
|
+
body: {
|
17
|
+
'token_type' => 'bearer',
|
18
|
+
'expires_at' => (Time.now + (60 * 60 * 24)).to_i,
|
19
|
+
'scope' => 'wl.skydrive_update,wl.offline_access',
|
20
|
+
'access_token' => 'access_token',
|
21
|
+
'refresh_token' => 'refresh_token',
|
22
|
+
'authentication_token' => 'authentication_token'
|
23
|
+
}.to_json,
|
24
|
+
headers: {
|
25
|
+
'content-type' => 'application/json' })
|
26
26
|
|
27
27
|
driver = BrowseEverything::Driver::SkyDrive.new(provider_yml)
|
28
|
-
driver.connect({code:
|
28
|
+
driver.connect({ code: 'code' }, {})
|
29
29
|
driver.authorized?.should == true
|
30
30
|
end
|
31
31
|
|
32
|
-
it
|
33
|
-
stub_request(:post,
|
34
|
-
with(:
|
35
|
-
to_return(:
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
32
|
+
it 'can connect but expires' do
|
33
|
+
stub_request(:post, 'https://login.live.com/oauth20_token.srf')
|
34
|
+
.with(body: { 'client_id' => 'CLIENTID', 'client_secret' => 'CLIENTSECRET', 'code' => 'code', 'grant_type' => 'authorization_code', 'redirect_uri' => redirect_url.to_s })
|
35
|
+
.to_return(status: 200,
|
36
|
+
body: {
|
37
|
+
'token_type' => 'bearer',
|
38
|
+
'expires_at' => (Time.now - (60 * 60 * 24)).to_i,
|
39
|
+
'scope' => 'wl.skydrive_update,wl.offline_access',
|
40
|
+
'access_token' => 'access_token',
|
41
|
+
'refresh_token' => 'refresh_token',
|
42
|
+
'authentication_token' => 'authentication_token'
|
43
|
+
}.to_json,
|
44
|
+
headers: {
|
45
|
+
'content-type' => 'application/json' })
|
46
46
|
|
47
47
|
driver = BrowseEverything::Driver::SkyDrive.new(provider_yml)
|
48
|
-
driver.connect({code:
|
48
|
+
driver.connect({ code: 'code' }, {})
|
49
49
|
driver.authorized?.should == false
|
50
50
|
end
|
51
51
|
end
|
@@ -1,71 +1,71 @@
|
|
1
1
|
describe 'browse_everything/_file.html.erb', type: :view do
|
2
|
-
let(:file)
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
let(:container)
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
let(:provider) { double(
|
2
|
+
let(:file) do
|
3
|
+
BrowseEverything::FileEntry.new(
|
4
|
+
'file_id_01234', 'my_provider:/location/pa/th/file.m4v',
|
5
|
+
'file.m4v', 1024 * 1024 * 1024, Time.now, false
|
6
|
+
)
|
7
|
+
end
|
8
|
+
let(:container) do
|
9
|
+
BrowseEverything::FileEntry.new(
|
10
|
+
'dir_id_01234', 'my_provider:/location/pa/th/dir',
|
11
|
+
'dir', 0, Time.now, true
|
12
|
+
)
|
13
|
+
end
|
14
|
+
let(:provider) { double('provider') }
|
15
15
|
let(:page) { Capybara::Node::Simple.new(rendered) }
|
16
16
|
|
17
17
|
before do
|
18
18
|
allow(view).to receive(:browse_everything_engine).and_return(BrowseEverything::Engine.routes.url_helpers)
|
19
19
|
allow(view).to receive(:provider).and_return(provider)
|
20
|
-
allow(view).to receive(:path).and_return(
|
21
|
-
allow(view).to receive(:parent).and_return(
|
22
|
-
allow(view).to receive(:provider_name).and_return(
|
20
|
+
allow(view).to receive(:path).and_return('path')
|
21
|
+
allow(view).to receive(:parent).and_return('parent')
|
22
|
+
allow(view).to receive(:provider_name).and_return('my provider')
|
23
23
|
allow(provider).to receive(:config).and_return(config)
|
24
24
|
end
|
25
25
|
|
26
|
-
describe
|
26
|
+
describe 'a file' do
|
27
27
|
before do
|
28
28
|
allow(view).to receive(:file).and_return(file)
|
29
29
|
render
|
30
30
|
end
|
31
|
-
context
|
32
|
-
let(:config) { { max_upload_file_size: (5*1024*1024*1024) } }
|
33
|
-
it
|
34
|
-
expect(page).to have_selector(
|
31
|
+
context 'file not too big' do
|
32
|
+
let(:config) { { max_upload_file_size: (5 * 1024 * 1024 * 1024) } }
|
33
|
+
it 'should draw link' do
|
34
|
+
expect(page).to have_selector('a.ev-link')
|
35
35
|
end
|
36
36
|
end
|
37
37
|
|
38
|
-
context
|
39
|
-
let(:config) { {
|
40
|
-
it
|
41
|
-
expect(page).to have_selector(
|
38
|
+
context 'max not configured' do
|
39
|
+
let(:config) { {} }
|
40
|
+
it 'should draw link' do
|
41
|
+
expect(page).to have_selector('a.ev-link')
|
42
42
|
end
|
43
43
|
end
|
44
44
|
|
45
|
-
context
|
45
|
+
context 'file too big' do
|
46
46
|
let(:config) { { max_upload_file_size: 1024 } }
|
47
|
-
it
|
48
|
-
expect(page).not_to have_selector(
|
47
|
+
it 'should draw link' do
|
48
|
+
expect(page).not_to have_selector('a.ev-link')
|
49
49
|
end
|
50
50
|
end
|
51
51
|
|
52
|
-
context
|
53
|
-
let(:config) { {
|
54
|
-
it
|
55
|
-
expect(page).not_to have_selector(
|
52
|
+
context 'multi-select' do
|
53
|
+
let(:config) { {} }
|
54
|
+
it 'should not have a checkbox' do
|
55
|
+
expect(page).not_to have_selector('input.ev-select-all')
|
56
56
|
end
|
57
57
|
end
|
58
58
|
end
|
59
59
|
|
60
|
-
describe
|
60
|
+
describe 'a directory' do
|
61
61
|
before do
|
62
62
|
allow(view).to receive(:file).and_return(container)
|
63
63
|
render
|
64
64
|
end
|
65
|
-
context
|
66
|
-
let(:config) { {
|
67
|
-
it
|
68
|
-
expect(page).to have_selector(
|
65
|
+
context 'multi-select' do
|
66
|
+
let(:config) { {} }
|
67
|
+
it 'should have the select-all checkbox' do
|
68
|
+
expect(page).to have_selector('input.ev-select-all')
|
69
69
|
end
|
70
70
|
end
|
71
71
|
end
|
data/tasks/ci.rake
CHANGED
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: 0.11.0
|
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: 2016-
|
16
|
+
date: 2016-12-31 00:00:00.000000000 Z
|
17
17
|
dependencies:
|
18
18
|
- !ruby/object:Gem::Dependency
|
19
19
|
name: rails
|
@@ -133,14 +133,28 @@ dependencies:
|
|
133
133
|
requirements:
|
134
134
|
- - "~>"
|
135
135
|
- !ruby/object:Gem::Version
|
136
|
-
version: 0.
|
136
|
+
version: '0.9'
|
137
137
|
type: :runtime
|
138
138
|
prerelease: false
|
139
139
|
version_requirements: !ruby/object:Gem::Requirement
|
140
140
|
requirements:
|
141
141
|
- - "~>"
|
142
142
|
- !ruby/object:Gem::Version
|
143
|
-
version: 0.
|
143
|
+
version: '0.9'
|
144
|
+
- !ruby/object:Gem::Dependency
|
145
|
+
name: signet
|
146
|
+
requirement: !ruby/object:Gem::Requirement
|
147
|
+
requirements:
|
148
|
+
- - ">="
|
149
|
+
- !ruby/object:Gem::Version
|
150
|
+
version: '0'
|
151
|
+
type: :runtime
|
152
|
+
prerelease: false
|
153
|
+
version_requirements: !ruby/object:Gem::Requirement
|
154
|
+
requirements:
|
155
|
+
- - ">="
|
156
|
+
- !ruby/object:Gem::Version
|
157
|
+
version: '0'
|
144
158
|
- !ruby/object:Gem::Dependency
|
145
159
|
name: httparty
|
146
160
|
requirement: !ruby/object:Gem::Requirement
|
@@ -155,6 +169,20 @@ dependencies:
|
|
155
169
|
- - ">="
|
156
170
|
- !ruby/object:Gem::Version
|
157
171
|
version: '0'
|
172
|
+
- !ruby/object:Gem::Dependency
|
173
|
+
name: aws-sdk
|
174
|
+
requirement: !ruby/object:Gem::Requirement
|
175
|
+
requirements:
|
176
|
+
- - ">="
|
177
|
+
- !ruby/object:Gem::Version
|
178
|
+
version: '0'
|
179
|
+
type: :runtime
|
180
|
+
prerelease: false
|
181
|
+
version_requirements: !ruby/object:Gem::Requirement
|
182
|
+
requirements:
|
183
|
+
- - ">="
|
184
|
+
- !ruby/object:Gem::Version
|
185
|
+
version: '0'
|
158
186
|
- !ruby/object:Gem::Dependency
|
159
187
|
name: rspec
|
160
188
|
requirement: !ruby/object:Gem::Requirement
|
@@ -197,6 +225,20 @@ dependencies:
|
|
197
225
|
- - ">="
|
198
226
|
- !ruby/object:Gem::Version
|
199
227
|
version: '0'
|
228
|
+
- !ruby/object:Gem::Dependency
|
229
|
+
name: rubocop
|
230
|
+
requirement: !ruby/object:Gem::Requirement
|
231
|
+
requirements:
|
232
|
+
- - ">="
|
233
|
+
- !ruby/object:Gem::Version
|
234
|
+
version: '0'
|
235
|
+
type: :development
|
236
|
+
prerelease: false
|
237
|
+
version_requirements: !ruby/object:Gem::Requirement
|
238
|
+
requirements:
|
239
|
+
- - ">="
|
240
|
+
- !ruby/object:Gem::Version
|
241
|
+
version: '0'
|
200
242
|
- !ruby/object:Gem::Dependency
|
201
243
|
name: simplecov
|
202
244
|
requirement: !ruby/object:Gem::Requirement
|
@@ -393,6 +435,8 @@ extra_rdoc_files: []
|
|
393
435
|
files:
|
394
436
|
- ".gitignore"
|
395
437
|
- ".rspec"
|
438
|
+
- ".rubocop.yml"
|
439
|
+
- ".rubocop_todo.yml"
|
396
440
|
- ".travis.yml"
|
397
441
|
- CONTRIBUTING.md
|
398
442
|
- Gemfile
|
@@ -400,7 +444,6 @@ files:
|
|
400
444
|
- LICENSE.txt
|
401
445
|
- README.md
|
402
446
|
- Rakefile
|
403
|
-
- app/.DS_Store
|
404
447
|
- app/assets/javascripts/browse_everything.js
|
405
448
|
- app/assets/javascripts/browse_everything/behavior.js.coffee
|
406
449
|
- app/assets/stylesheets/browse_everything.scss
|
@@ -409,7 +452,6 @@ files:
|
|
409
452
|
- app/controllers/browse_everything_controller.rb
|
410
453
|
- app/helpers/bootstrap_version_helper.rb
|
411
454
|
- app/helpers/browse_everything_helper.rb
|
412
|
-
- app/views/.DS_Store
|
413
455
|
- app/views/browse_everything/_auth.html.erb
|
414
456
|
- app/views/browse_everything/_file.html.erb
|
415
457
|
- app/views/browse_everything/_files.html.erb
|
@@ -430,6 +472,7 @@ files:
|
|
430
472
|
- lib/browse_everything/driver/dropbox.rb
|
431
473
|
- lib/browse_everything/driver/file_system.rb
|
432
474
|
- lib/browse_everything/driver/google_drive.rb
|
475
|
+
- lib/browse_everything/driver/s3.rb
|
433
476
|
- lib/browse_everything/driver/sky_drive.rb
|
434
477
|
- lib/browse_everything/engine.rb
|
435
478
|
- lib/browse_everything/file_entry.rb
|
@@ -468,6 +511,7 @@ files:
|
|
468
511
|
- spec/unit/file_entry_spec.rb
|
469
512
|
- spec/unit/file_system_spec.rb
|
470
513
|
- spec/unit/retriever_spec.rb
|
514
|
+
- spec/unit/s3_spec.rb
|
471
515
|
- spec/unit/sky_drive_spec.rb
|
472
516
|
- spec/views/browse_everything/_file.html.erb_spec.rb
|
473
517
|
- tasks/ci.rake
|
@@ -494,7 +538,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
494
538
|
version: '0'
|
495
539
|
requirements: []
|
496
540
|
rubyforge_project:
|
497
|
-
rubygems_version: 2.
|
541
|
+
rubygems_version: 2.6.8
|
498
542
|
signing_key:
|
499
543
|
specification_version: 4
|
500
544
|
summary: AJAX/Rails engine file browser for cloud storage services
|
@@ -527,5 +571,6 @@ test_files:
|
|
527
571
|
- spec/unit/file_entry_spec.rb
|
528
572
|
- spec/unit/file_system_spec.rb
|
529
573
|
- spec/unit/retriever_spec.rb
|
574
|
+
- spec/unit/s3_spec.rb
|
530
575
|
- spec/unit/sky_drive_spec.rb
|
531
576
|
- spec/views/browse_everything/_file.html.erb_spec.rb
|