browse-everything 0.8.1 → 0.8.2

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
  SHA1:
3
- metadata.gz: 752262cadeaa0b3b5a2ad672940be2614d39cf31
4
- data.tar.gz: de06161f252bed360dc7eb3cb6e36b6abfe2f350
3
+ metadata.gz: 894c8d28a00f0474da1f807768bb9cccc8add97e
4
+ data.tar.gz: dcaed8f54b8a79085536dd6a4b0c8743a9e370e6
5
5
  SHA512:
6
- metadata.gz: e35f26412fe189b2c70ae575cab4e872078165fe7712bfb6fc0019822271667d6ff06cac215866411dd6e7ddff066bd06d95943bd9030c6082b53cdb0995f156
7
- data.tar.gz: 3553e3fc787477acaf50f5f76f310768ec8681990f9582e5eb969e40f9728902aa502b432974f4e914d9d016cb347ba41f8ddf7c544d1e076b0b87a6f47e9897
6
+ metadata.gz: dad070cc647aece52eff80592a4ccaa702d195c87c37641f8b352c6b705db6c91c3b80b4c8132f3d461e22f4336b247e7d3a2594262cc9618bf5d8450bf38024
7
+ data.tar.gz: 1b8d2de4bc7415b2c504f5df2a979499d7f5142492d67b5e2b2e932395b35298cbd7adc3dcf42185211cad130f38502435424001e3074f3bda5c33c2f049f3c2
data/.travis.yml CHANGED
@@ -2,20 +2,22 @@ language: ruby
2
2
  cache: bundler
3
3
  sudo: false
4
4
  rvm:
5
- - 2.1
5
+ - 2.2
6
6
  env:
7
7
  global:
8
8
  - NOKOGIRI_USE_SYSTEM_LIBRARIES=true
9
9
  matrix:
10
- - "RAILS_VERSION=4.1.8"
11
- - "RAILS_VERSION=4.2.0"
10
+ - "RAILS_VERSION=4.1.10"
11
+ - "RAILS_VERSION=4.2.1"
12
12
 
13
13
  matrix:
14
14
  include:
15
- - rvm: 1.9.3
16
- env: "RAILS_VERSION=4.1.8"
15
+ - rvm: 2.1
16
+ env: "RAILS_VERSION=4.2.1"
17
17
  - rvm: 2.0
18
- env: "RAILS_VERSION=4.1.8"
18
+ env: "RAILS_VERSION=4.2.1"
19
+ - rvm: 1.9.3
20
+ env: "RAILS_VERSION=4.2.1"
19
21
 
20
22
  notifications:
21
23
  irc: "irc.freenode.org#projecthydra"
data/HISTORY.md CHANGED
@@ -1,3 +1,8 @@
1
+ ### 0.8.2 (2015-04-15)
2
+ - Add support for latest 4.1 and 4.2 Rails versions
3
+ - Add support for %20 encoded URLs
4
+ - Use Dropbox name consistently
5
+
1
6
  ### 0.8.1 (2015-03-03)
2
7
  - Use numeric size from Dropbox instead of string value
3
8
 
data/README.md CHANGED
@@ -3,13 +3,13 @@
3
3
 
4
4
  # BrowseEverything
5
5
 
6
- This Gem allows your rails application to access user files from cloud storage.
7
- Currently there are drivers implemented for [DropBox](http://www.dropbox.com),
8
- [Skydrive](https://skydrive.live.com/), [Google Drive](http://drive.google.com),
6
+ This Gem allows your rails application to access user files from cloud storage.
7
+ Currently there are drivers implemented for [Dropbox](http://www.dropbox.com),
8
+ [Skydrive](https://skydrive.live.com/), [Google Drive](http://drive.google.com),
9
9
  [Box](http://www.box.com), and a server-side directory share.
10
10
 
11
- The gem uses [OAuth](http://oauth.net/) to connect to a user's account and
12
- generate a list of single use urls that your application can then use to
11
+ The gem uses [OAuth](http://oauth.net/) to connect to a user's account and
12
+ generate a list of single use urls that your application can then use to
13
13
  download the files.
14
14
 
15
15
  **This gem does not depend on hydra-head**
@@ -27,18 +27,18 @@ And then execute:
27
27
  Or install it yourself as:
28
28
 
29
29
  $ gem install browse-everything
30
-
30
+
31
31
  ### Configuring the gem
32
-
32
+
33
33
  After installing the gem, run the generator
34
34
 
35
35
  $ rails g browse_everything:config
36
-
36
+
37
37
  This generator will set up the _config/browse_everything_providers.yml_ file and add the browse-everything engine to your application's routes.
38
38
 
39
- If you prefer not to use the generator, or need info on how to set up providers in the browse_everything_providers.yml, use the info on [Configuring browse-everything](https://github.com/projecthydra/browse-everything/wiki/Configuring-browse-everything).
39
+ If you prefer not to use the generator, or need info on how to set up providers in the browse_everything_providers.yml, use the info on [Configuring browse-everything](https://github.com/projecthydra/browse-everything/wiki/Configuring-browse-everything).
40
40
 
41
- ### Include the CSS and JavaScript
41
+ ### Include the CSS and JavaScript
42
42
 
43
43
  Add `@import "browse_everything";` to your application.css.scss
44
44
 
@@ -47,7 +47,7 @@ Add `//= require browse_everything` to your application.js
47
47
  ## Usage
48
48
 
49
49
  ### Adding Providers
50
- In order to connect to a provider like [DropBox](http://www.dropbox.com),
50
+ In order to connect to a provider like [Dropbox](http://www.dropbox.com),
51
51
  [Skydrive](https://skydrive.live.com/), [Google Drive](http://drive.google.com), or
52
52
  [Box](http://www.box.com), you must provide API keys in _config/browse_everything_providers.yml_. For info on how to edit this file, see [Configuring browse-everything](https://github.com/projecthydra/browse-everything/wiki/Configuring-browse-everything)
53
53
 
@@ -57,8 +57,7 @@ browse-everything can be triggered in two ways -- either via data attributes in
57
57
 
58
58
  #### Options
59
59
 
60
-
61
- | Name | Type | Default | Description |
60
+ | Name | Type | Default | Description |
62
61
  |-----------------|-----------------|-----------------|----------------------------------------------------------------|
63
62
  | route | path (required) | '' | The base route of the browse-everything engine. |
64
63
  | target | xpath or jQuery | null | A form object to add the results to as hidden fields. |
@@ -68,7 +67,6 @@ browse-everything can be triggered in two ways -- either via data attributes in
68
67
  If a `target` is provided, browse-everything will automatically convert the JSON response to a series of hidden form fields
69
68
  that can be posted back to Rails to re-create the array on the server side.
70
69
 
71
-
72
70
  #### Via data attributes
73
71
 
74
72
  To trigger browse-everything using data attributes, set the _data-toggle_ attribute to "browse-everything" on the HTML tag. This tells the javascript where to attach the browse-everything behaviors. Pass in the options using the _data-route_ and _data-target_ attributes, as in `data-target="#myForm"`.
@@ -76,13 +74,13 @@ To trigger browse-everything using data attributes, set the _data-toggle_ attrib
76
74
  For example:
77
75
 
78
76
  ```html
79
- <button type="button" data-toggle="browse-everything" data-route="<%=browse_everything_engine.root_path%>"
77
+ <button type="button" data-toggle="browse-everything" data-route="<%=browse_everything_engine.root_path%>"
80
78
  data-target="#myForm" class="btn btn-large btn-success" id="browse">Browse!</button>
81
79
  ```
82
80
 
83
81
  #### Via JavaScript
84
82
 
85
- To trigger browse-everything via javascript, use the .browseEverything() method to attach the behaviors to DOM elements.
83
+ To trigger browse-everything via javascript, use the .browseEverything() method to attach the behaviors to DOM elements.
86
84
 
87
85
  ```javascript
88
86
  $('#browse').browseEverything(options)
@@ -98,20 +96,19 @@ $('#browse').browseEverything({
98
96
 
99
97
  See [JavaScript Methods](https://github.com/projecthydra/browse-everything/wiki/JavaScript-Methods) for more info on using javascript to trigger browse-everything.
100
98
 
101
-
102
- ### The Results (Data Structure)
99
+ ### The Results (Data Structure)
103
100
 
104
101
  browse-everything returns a JSON data structure consisting of an array of URL specifications. Each URL specification
105
102
  is a plain object with the following properties:
106
103
 
107
- | Property | Description |
104
+ | Property | Description |
108
105
  |--------------------|--------------------------------------------------------------------------------------|
109
- | url | The URL of the selected remote file. |
106
+ | url | The URL of the selected remote file. |
110
107
  | auth_header | Any headers that need to be added to the request in order to access the remote file. |
111
- | expires | The expiration date/time of the specified URL. |
108
+ | expires | The expiration date/time of the specified URL. |
112
109
  | file_name | The base name (filename.ext) of the selected file. |
113
110
 
114
- For example, after picking two files from dropbox,
111
+ For example, after picking two files from dropbox,
115
112
 
116
113
  If you initialized browse-everything via JavaScript, the results data passed to the `.done()` callback will look like this:
117
114
  ```json
@@ -127,19 +124,19 @@ If you initialized browse-everything via JavaScript, the results data passed to
127
124
  }
128
125
  ]
129
126
  ```
130
- See [JavaScript Methods](https://github.com/projecthydra/browse-everything/wiki/JavaScript-Methods) for more info on using javascript to trigger browse-everything.
127
+ See [JavaScript Methods](https://github.com/projecthydra/browse-everything/wiki/JavaScript-Methods) for more info on using javascript to trigger browse-everything.
131
128
 
132
129
  If you initialized browse-everything via data-attributes and set the _target_ option (via the _data-target_ attribute or via the _target_ option on the javascript method), the results data be written as hidden fields in the `<form>` you've specified as the target. When the user submits that form, the results will look like this:
133
130
  ```ruby
134
131
  "selected_files" => {
135
132
  "0"=>{
136
- "url"=>"https://dl.dropbox.com/fake/filepicker-demo.txt.txt",
137
- "expires"=>"2014-03-31T20:37:36.214Z",
133
+ "url"=>"https://dl.dropbox.com/fake/filepicker-demo.txt.txt",
134
+ "expires"=>"2014-03-31T20:37:36.214Z",
138
135
  "file_name"=>"filepicker-demo.txt.txt"
139
- },
136
+ },
140
137
  "1"=>{
141
- "url"=>"https://dl.dropbox.com/fake/Getting%20Started.pdf",
142
- "expires"=>"2014-03-31T20:37:36.731Z",
138
+ "url"=>"https://dl.dropbox.com/fake/Getting%20Started.pdf",
139
+ "expires"=>"2014-03-31T20:37:36.731Z",
143
140
  "file_name"=>"Getting Started.pdf"
144
141
  }
145
142
  }
@@ -174,7 +171,7 @@ end
174
171
  ### Examples
175
172
 
176
173
  See `spec/support/app/views/file_handler/index.html` for an example use case. You can also run `rake app:generate` to
177
- create a fully-functioning demo app in `spec/internal` (though you will have to create
174
+ create a fully-functioning demo app in `spec/internal` (though you will have to create
178
175
  `spec/internal/config/browse_everything.providers.yml` file with your own configuration info.)
179
176
 
180
177
  ## Contributing
@@ -185,6 +182,6 @@ create a fully-functioning demo app in `spec/internal` (though you will have to
185
182
  4. Push to the branch (`git push origin my-new-feature`)
186
183
  5. Create new Pull Request
187
184
 
188
- ## Help
185
+ ## Help
189
186
 
190
187
  For help with Questioning Authority, contact <hydra-tech@googlegroups.com>.
@@ -11,7 +11,7 @@ module BrowseEverything
11
11
  module Driver
12
12
  autoload :Base, 'browse_everything/driver/base'
13
13
  autoload :FileSystem, 'browse_everything/driver/file_system'
14
- autoload :DropBox, 'browse_everything/driver/drop_box'
14
+ autoload :Dropbox, 'browse_everything/driver/dropbox'
15
15
  autoload :SkyDrive, 'browse_everything/driver/sky_drive'
16
16
  autoload :Box, 'browse_everything/driver/box'
17
17
  autoload :GoogleDrive, 'browse_everything/driver/google_drive'
@@ -23,6 +23,12 @@ module BrowseEverything
23
23
  @config = value
24
24
  elsif value.kind_of?(String)
25
25
  @config = YAML.load(File.read(value))
26
+
27
+ if @config.include? 'drop_box'
28
+ warn "[DEPRECATION] `drop_box` is deprecated. Please use `dropbox` instead."
29
+ @config['dropbox'] = @config.delete('drop_box')
30
+ end
31
+
26
32
  else
27
33
  raise InitializationError, "Unrecognized configuration: #{value.inspect}"
28
34
  end
@@ -2,15 +2,15 @@ require 'dropbox_sdk'
2
2
 
3
3
  module BrowseEverything
4
4
  module Driver
5
- class DropBox < Base
5
+ class Dropbox < Base
6
6
 
7
7
  def icon
8
8
  'dropbox'
9
9
  end
10
-
10
+
11
11
  def validate_config
12
12
  unless [:app_key,:app_secret].all? { |key| config[key].present? }
13
- raise BrowseEverything::InitializationError, "DropBox driver requires :app_key and :app_secret"
13
+ raise BrowseEverything::InitializationError, "Dropbox driver requires :app_key and :app_secret"
14
14
  end
15
15
  end
16
16
 
@@ -46,7 +46,7 @@ module BrowseEverything
46
46
  end
47
47
 
48
48
  def auth_link
49
- [ auth_flow.start('drop_box'), @csrf ]
49
+ [ auth_flow.start('dropbox'), @csrf ]
50
50
  end
51
51
 
52
52
  def connect(params,data)
@@ -1,10 +1,8 @@
1
1
  module BrowseEverything
2
2
  class Engine < ::Rails::Engine
3
- initializer :assets do |config|
4
- config.assets.paths << config.root.join('vendor', 'assets', 'javascripts')
5
- config.assets.paths << config.root.join('vendor', 'assets', 'stylesheets')
6
- Rails.application.config.assets.precompile += %w{ browse_everything.js }
7
- Rails.application.config.assets.precompile += %w{ browse_everything.css }
8
- end
3
+ config.assets.paths << config.root.join('vendor', 'assets', 'javascripts')
4
+ config.assets.paths << config.root.join('vendor', 'assets', 'stylesheets')
5
+ config.assets.precompile += %w{ browse_everything.js }
6
+ config.assets.precompile += %w{ browse_everything.css }
9
7
  end
10
8
  end
@@ -30,7 +30,7 @@ module BrowseEverything
30
30
  raise ArugumentError, "Download spec expired at #{spec['expires']}"
31
31
  end
32
32
 
33
- url = URI.parse(spec['url'])
33
+ url = Addressable::URI.parse(spec['url'])
34
34
  retrieved = 0
35
35
  case url.scheme
36
36
  when 'file'
@@ -1,3 +1,3 @@
1
1
  module BrowseEverything
2
- VERSION = "0.8.1"
2
+ VERSION = "0.8.2"
3
3
  end
@@ -8,24 +8,21 @@ class BrowseEverything::ConfigGenerator < Rails::Generators::Base
8
8
  2. Modifies your app's routes.rb to mount BrowseEverything at /browse
9
9
  """
10
10
  source_root File.expand_path('../templates', __FILE__)
11
-
11
+
12
12
  def inject_routes
13
13
  insert_into_file "config/routes.rb", :after => ".draw do" do
14
14
  %{
15
15
  mount BrowseEverything::Engine => '/browse'}
16
16
  end
17
- end
18
-
17
+ end
18
+
19
19
  def copy_example_config
20
20
  copy_file "browse_everything_providers.yml.example", "config/browse_everything_providers.yml"
21
21
  end
22
-
22
+
23
23
  def insert_file_system_path
24
- insert_into_file "config/browse_everything_providers.yml", :before => "# drop_box:" do
24
+ insert_into_file "config/browse_everything_providers.yml", :before => "# dropbox:" do
25
25
  YAML.dump({ 'file_system' => { :home => Rails.root.to_s }})
26
26
  end
27
27
  end
28
-
29
-
30
-
31
- end
28
+ end
@@ -2,7 +2,7 @@
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
- # drop_box:
5
+ # dropbox:
6
6
  # :app_key: YOUR_DROPBOX_APP_KEY
7
7
  # :app_secret: YOUR_DROPBOX_APP_SECRET
8
8
  # box:
@@ -2,7 +2,7 @@
2
2
  http_interactions:
3
3
  - request:
4
4
  method: post
5
- uri: https://DropBoxAppKey:DropBoxAppSecret@api.dropbox.com/1/oauth2/token
5
+ uri: https://DropboxAppKey:DropboxAppSecret@api.dropbox.com/1/oauth2/token
6
6
  body:
7
7
  encoding: UTF-8
8
8
  string: grant_type=authorization_code&code=FakeDropboxAuthorizationCodeABCDEFG&redirect_uri=http%3A%2F%2Fbrowse.example.edu%2Fbrowse%2Fconnect
@@ -341,7 +341,7 @@ http_interactions:
341
341
  X-RequestId: 83bc363934d5a5457cbcbd0fab8b4cfb
342
342
  body:
343
343
  encoding: UTF-8
344
- string: ! '{ "revision": 4009, "rev": "fa900cbb190", "thumb_exists": false, "bytes": 20904,
344
+ string: ! '{ "revision": 4009, "rev": "fa900cbb190", "thumb_exists": false, "bytes": 20904,
345
345
  "modified": "Sat, 09 Apr 2011 18:54:54 +0000", "client_mtime": "Sat, 09 Apr 2011 18:54:54 +0000",
346
346
  "path": "/Writer/Writer FAQ.txt", "is_dir": false, "icon": "page_white_text", "root":
347
347
  "dropbox", "mime_type": "text/plain", "size": "20.4 KB" }'
@@ -382,9 +382,9 @@ http_interactions:
382
382
  X-RequestId: 83bc363934d5a5457cbcbd0fab8b4cfb
383
383
  body:
384
384
  encoding: UTF-8
385
- string: ! '{ "revision": 2754, "rev": "ac200cbb190", "thumb_exists": false,
386
- "bytes": 988, "modified": "Thu, 14 Oct 2010 08:32:20 +0000",
387
- "client_mtime": "Thu, 14 Oct 2010 08:32:20 +0000",
385
+ string: ! '{ "revision": 2754, "rev": "ac200cbb190", "thumb_exists": false,
386
+ "bytes": 988, "modified": "Thu, 14 Oct 2010 08:32:20 +0000",
387
+ "client_mtime": "Thu, 14 Oct 2010 08:32:20 +0000",
388
388
  "path": "/Writer/Markdown Test.txt", "is_dir": false, "icon": "page_white_text",
389
389
  "root": "dropbox", "mime_type": "text/plain", "size": "988 bytes" }'
390
390
  http_version: '1.1'
data/spec/spec_helper.rb CHANGED
@@ -44,9 +44,9 @@ module BrowserConfigHelper
44
44
  client_id: "BoxClientId",
45
45
  client_secret: "BoxClientSecret"
46
46
  },
47
- "drop_box" => {
48
- app_key: "DropBoxAppKey",
49
- app_secret: "DropBoxAppSecret"
47
+ "dropbox" => {
48
+ app_key: "DropboxAppKey",
49
+ app_secret: "DropboxAppSecret"
50
50
  },
51
51
  "google_drive" => {
52
52
  client_id: "GoogleClientId",
@@ -3,24 +3,24 @@ require File.expand_path('../../spec_helper',__FILE__)
3
3
  include BrowserConfigHelper
4
4
 
5
5
  describe BrowseEverything::Browser do
6
- let(:file_config) {
6
+ let(:file_config) {
7
7
  {
8
8
  file_system: { home: '/file/config/home' },
9
- drop_box: { app_key: 'FileConfigKey', app_secret: 'FileConfigSecret' }
9
+ dropbox: { app_key: 'FileConfigKey', app_secret: 'FileConfigSecret' }
10
10
  }.to_yaml
11
11
  }
12
12
 
13
13
  let(:global_config) {
14
14
  {
15
15
  file_system: { home: '/global/config/home' },
16
- drop_box: { app_key: 'GlobalConfigKey', app_secret: 'GlobalConfigSecret' }
16
+ dropbox: { app_key: 'GlobalConfigKey', app_secret: 'GlobalConfigSecret' }
17
17
  }
18
18
  }
19
19
 
20
20
  let(:local_config) {
21
21
  {
22
22
  file_system: { home: '/local/config/home' },
23
- drop_box: { app_key: 'LocalConfigKey', app_secret: 'LocalConfigSecret' },
23
+ dropbox: { app_key: 'LocalConfigKey', app_secret: 'LocalConfigSecret' },
24
24
  url_options: url_options
25
25
  }
26
26
  }
@@ -30,47 +30,47 @@ describe BrowseEverything::Browser do
30
30
  subject { BrowseEverything::Browser.new(url_options) }
31
31
 
32
32
  it "should have 2 providers" do
33
- expect(subject.providers.keys).to eq([:file_system,:drop_box])
33
+ expect(subject.providers.keys).to eq([:file_system, :dropbox])
34
34
  end
35
35
 
36
36
  it "should use the file configuration" do
37
- expect(subject.providers[:drop_box].config[:app_key]).to eq('FileConfigKey')
37
+ expect(subject.providers[:dropbox].config[:app_key]).to eq('FileConfigKey')
38
38
  end
39
39
  end
40
40
 
41
41
  describe "global config" do
42
42
  before(:each) { BrowseEverything.configure(global_config) }
43
43
  subject { BrowseEverything::Browser.new(url_options) }
44
-
44
+
45
45
  it "should have 2 providers" do
46
- expect(subject.providers.keys).to eq([:file_system,:drop_box])
46
+ expect(subject.providers.keys).to eq([:file_system, :dropbox])
47
47
  end
48
48
 
49
49
  it "should use the global configuration" do
50
- expect(subject.providers[:drop_box].config[:app_key]).to eq('GlobalConfigKey')
50
+ expect(subject.providers[:dropbox].config[:app_key]).to eq('GlobalConfigKey')
51
51
  end
52
52
  end
53
53
 
54
54
  describe "local config" do
55
55
  subject { BrowseEverything::Browser.new(local_config) }
56
-
56
+
57
57
  it "should have 2 providers" do
58
- expect(subject.providers.keys).to eq([:file_system,:drop_box])
58
+ expect(subject.providers.keys).to eq([:file_system, :dropbox])
59
59
  end
60
60
 
61
61
  it "should use the local configuration" do
62
- expect(subject.providers[:drop_box].config[:app_key]).to eq('LocalConfigKey')
62
+ expect(subject.providers[:dropbox].config[:app_key]).to eq('LocalConfigKey')
63
63
  end
64
64
  end
65
65
 
66
66
  describe "unknown provider" do
67
- subject {
67
+ subject {
68
68
  BrowseEverything::Browser.new(local_config.merge(foo: { key: 'bar', secret: 'baz' }))
69
69
  }
70
70
 
71
71
  it "should complain but continue" do
72
72
  allow(Rails.logger).to receive(:warn).with('Unknown provider: foo')
73
- expect(subject.providers.keys).to eq([:file_system,:drop_box])
73
+ expect(subject.providers.keys).to eq([:file_system, :dropbox])
74
74
  end
75
75
  end
76
76
  end
@@ -2,26 +2,26 @@ require File.expand_path('../../spec_helper',__FILE__)
2
2
 
3
3
  include BrowserConfigHelper
4
4
 
5
- describe BrowseEverything::Driver::DropBox, vcr: { cassette_name: 'dropbox', record: :none } do
5
+ describe BrowseEverything::Driver::Dropbox, vcr: { cassette_name: 'dropbox', record: :none } do
6
6
  before(:all) { stub_configuration }
7
7
  after(:all) { unstub_configuration }
8
8
 
9
9
  let(:browser) { BrowseEverything::Browser.new(url_options) }
10
- let(:provider) { browser.providers['drop_box'] }
10
+ let(:provider) { browser.providers['dropbox'] }
11
11
  let(:auth_params) { {
12
12
  'code' => 'FakeDropboxAuthorizationCodeABCDEFG',
13
- 'state' => 'GjDcUhPNZrZzdsw%2FghBy2A%3D%3D|drop_box'
13
+ 'state' => 'GjDcUhPNZrZzdsw%2FghBy2A%3D%3D|dropbox'
14
14
  } }
15
15
  let(:csrf_data) { {'token' => 'GjDcUhPNZrZzdsw%2FghBy2A%3D%3D'} }
16
16
 
17
17
  it "#validate_config" do
18
- expect { BrowseEverything::Driver::DropBox.new({}) }.to raise_error(BrowseEverything::InitializationError)
18
+ expect { BrowseEverything::Driver::Dropbox.new({}) }.to raise_error(BrowseEverything::InitializationError)
19
19
  end
20
20
 
21
21
  describe "simple properties" do
22
22
  subject { provider }
23
- its(:name) { should == 'Drop Box' }
24
- its(:key) { should == 'drop_box' }
23
+ its(:name) { should == 'Dropbox' }
24
+ its(:key) { should == 'dropbox' }
25
25
  its(:icon) { should be_a(String) }
26
26
  end
27
27
 
@@ -33,7 +33,7 @@ describe BrowseEverything::Driver::DropBox, vcr: { cassette_name: 'dropbox', rec
33
33
  context "#auth_link" do
34
34
  specify { subject.auth_link[0].should start_with('https://www.dropbox.com/1/oauth2/authorize') }
35
35
  end
36
-
36
+
37
37
  it "should authorize" do
38
38
  subject.connect(auth_params,csrf_data)
39
39
  expect(subject).to be_authorized
@@ -59,7 +59,7 @@ describe BrowseEverything::Driver::DropBox, vcr: { cassette_name: 'dropbox', rec
59
59
  subject { contents[4] }
60
60
  its(:name) { should == 'iPad intro.pdf' }
61
61
  its(:size) { should == 208218 }
62
- its(:location) { should == "drop_box:/iPad intro.pdf" }
62
+ its(:location) { should == "dropbox:/iPad intro.pdf" }
63
63
  its(:type) { should == "application/pdf" }
64
64
  specify { should_not be_container }
65
65
  end
@@ -75,21 +75,21 @@ describe BrowseEverything::Driver::DropBox, vcr: { cassette_name: 'dropbox', rec
75
75
  context "[1]" do
76
76
  subject { contents[1] }
77
77
  its(:name) { should == 'About Writer.txt' }
78
- its(:location) { should == "drop_box:/Writer/About Writer.txt" }
78
+ its(:location) { should == "dropbox:/Writer/About Writer.txt" }
79
79
  its(:type) { should == "text/plain" }
80
80
  specify { should_not be_container }
81
81
  end
82
82
  context "[2]" do
83
83
  subject { contents[2] }
84
84
  its(:name) { should == 'Markdown Test.txt' }
85
- its(:location) { should == "drop_box:/Writer/Markdown Test.txt" }
85
+ its(:location) { should == "dropbox:/Writer/Markdown Test.txt" }
86
86
  its(:type) { should == "text/plain" }
87
87
  specify { should_not be_container }
88
88
  end
89
89
  context "[3]" do
90
90
  subject { contents[3] }
91
91
  its(:name) { should == 'Writer FAQ.txt' }
92
- its(:location) { should == "drop_box:/Writer/Writer FAQ.txt" }
92
+ its(:location) { should == "dropbox:/Writer/Writer FAQ.txt" }
93
93
  its(:type) { should == "text/plain" }
94
94
  specify { should_not be_container }
95
95
  end
@@ -104,13 +104,13 @@ describe BrowseEverything::Driver::DropBox, vcr: { cassette_name: 'dropbox', rec
104
104
  describe "#link_for" do
105
105
  before(:each) { provider.connect(auth_params,csrf_data) }
106
106
 
107
- context "[0]" do
107
+ context "[0]" do
108
108
  subject { provider.link_for('/Writer/Writer FAQ.txt') }
109
109
  specify { subject[0].should == "https://dl.dropboxusercontent.com/1/view/FakeDropboxAccessPath/Writer/Writer%20FAQ.txt" }
110
110
  specify { subject[1].should have_key(:expires) }
111
111
  end
112
112
 
113
- context "[1]" do
113
+ context "[1]" do
114
114
  subject { provider.link_for('/Writer/Markdown Test.txt') }
115
115
  specify { subject[0].should == "https://dl.dropboxusercontent.com/1/view/FakeDropboxAccessPath/Writer/Markdown%20Test.txt" }
116
116
  specify { subject[1].should have_key(:expires) }
@@ -36,13 +36,21 @@ describe BrowseEverything::Driver::FileSystem do
36
36
  end
37
37
  context "[2]" do
38
38
  subject { contents[2] }
39
+ its(:name) { should == 'file 1.pdf' }
40
+ its(:size) { should == 2256 }
41
+ its(:location) { should == "file_system:#{File.join(home,'file 1.pdf')}" }
42
+ its(:type) { should == "application/pdf" }
43
+ specify { should_not be_container }
44
+ end
45
+ context "[3]" do
46
+ subject { contents[3] }
39
47
  its(:name) { should == 'file_1.pdf' }
40
48
  its(:size) { should == 2256 }
41
49
  its(:location) { should == "file_system:#{File.join(home,'file_1.pdf')}" }
42
50
  its(:type) { should == "application/pdf" }
43
51
  specify { should_not be_container }
44
52
  end
45
- end
53
+ end
46
54
 
47
55
  context "subdirectory" do
48
56
  let(:contents) { provider.contents('/dir_1') }
@@ -3,7 +3,9 @@ require File.expand_path('../../spec_helper',__FILE__)
3
3
  describe BrowseEverything::Retriever, vcr: { cassette_name: 'retriever', record: :none, } do
4
4
  subject { BrowseEverything::Retriever.new }
5
5
  let(:datafile) { File.expand_path('../../fixtures/file_system/file_1.pdf',__FILE__) }
6
+ let(:datafile_with_spaces) { File.expand_path('../../fixtures/file_system/file 1.pdf',__FILE__) }
6
7
  let(:data) { File.open(datafile,'rb',&:read) }
8
+ let(:data_with_spaces) { File.open(datafile_with_spaces, 'rb', &:read) }
7
9
  let(:size) { File.size(datafile) }
8
10
 
9
11
  context 'http://' do
@@ -18,7 +20,7 @@ describe BrowseEverything::Retriever, vcr: { cassette_name: 'retriever', record:
18
20
  }
19
21
  }
20
22
  }
21
-
23
+
22
24
  context "#retrieve" do
23
25
  it "content" do
24
26
  content = ''
@@ -50,7 +52,12 @@ describe BrowseEverything::Retriever, vcr: { cassette_name: 'retriever', record:
50
52
  "url"=>"file://#{datafile}",
51
53
  "file_name"=>"file.pdf",
52
54
  "file_size"=>size.to_s
53
- }
55
+ },
56
+ "1" => {
57
+ "url" => "file://#{datafile_with_spaces}",
58
+ "file_name" => "file.pdf",
59
+ "file_size" => size.to_s
60
+ }
54
61
  }
55
62
  }
56
63
 
@@ -61,6 +68,12 @@ describe BrowseEverything::Retriever, vcr: { cassette_name: 'retriever', record:
61
68
  expect(content).to eq(data)
62
69
  end
63
70
 
71
+ it "content with spaces" do
72
+ content = ''
73
+ subject.retrieve(spec['1']) { |chunk, retrieved, total| content << chunk }
74
+ expect(content).to eq(data_with_spaces)
75
+ end
76
+
64
77
  it "callbacks" do
65
78
  expect { |block| subject.retrieve(spec['0'], &block) }.to yield_with_args(data, data.length, data.length)
66
79
  end
@@ -13,6 +13,7 @@ describe 'browse_everything/_file.html.erb', type: :view do
13
13
 
14
14
 
15
15
  before do
16
+ allow(view).to receive(:browse_everything_engine).and_return(BrowseEverything::Engine.routes.url_helpers)
16
17
  allow(view).to receive(:file).and_return(file)
17
18
  allow(view).to receive(:provider).and_return(provider)
18
19
  allow(view).to receive(:path).and_return("path")
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.8.1
4
+ version: 0.8.2
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: 2015-03-03 00:00:00.000000000 Z
16
+ date: 2015-04-15 00:00:00.000000000 Z
17
17
  dependencies:
18
18
  - !ruby/object:Gem::Dependency
19
19
  name: rails
@@ -383,7 +383,7 @@ files:
383
383
  - lib/browse_everything/browser.rb
384
384
  - lib/browse_everything/driver/base.rb
385
385
  - lib/browse_everything/driver/box.rb
386
- - lib/browse_everything/driver/drop_box.rb
386
+ - lib/browse_everything/driver/dropbox.rb
387
387
  - lib/browse_everything/driver/file_system.rb
388
388
  - lib/browse_everything/driver/google_drive.rb
389
389
  - lib/browse_everything/driver/sky_drive.rb
@@ -397,6 +397,7 @@ files:
397
397
  - spec/fixtures/file_system/dir_1/dir_3/file_3.m4v
398
398
  - spec/fixtures/file_system/dir_1/file_2.txt
399
399
  - spec/fixtures/file_system/dir_2/file_4.docx
400
+ - spec/fixtures/file_system/file 1.pdf
400
401
  - spec/fixtures/file_system/file_1.pdf
401
402
  - spec/fixtures/vcr_cassettes/dropbox.yml
402
403
  - spec/fixtures/vcr_cassettes/retriever.yml
@@ -408,7 +409,7 @@ files:
408
409
  - spec/unit/base_spec.rb
409
410
  - spec/unit/browse_everything_helper_spec.rb
410
411
  - spec/unit/browser_spec.rb
411
- - spec/unit/drop_box_spec.rb
412
+ - spec/unit/dropbox_spec.rb
412
413
  - spec/unit/file_entry_spec.rb
413
414
  - spec/unit/file_system_spec.rb
414
415
  - spec/unit/retriever_spec.rb
@@ -438,7 +439,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
438
439
  version: '0'
439
440
  requirements: []
440
441
  rubyforge_project:
441
- rubygems_version: 2.2.2
442
+ rubygems_version: 2.4.6
442
443
  signing_key:
443
444
  specification_version: 4
444
445
  summary: AJAX/Rails engine file browser for cloud storage services
@@ -447,6 +448,7 @@ test_files:
447
448
  - spec/fixtures/file_system/dir_1/dir_3/file_3.m4v
448
449
  - spec/fixtures/file_system/dir_1/file_2.txt
449
450
  - spec/fixtures/file_system/dir_2/file_4.docx
451
+ - spec/fixtures/file_system/file 1.pdf
450
452
  - spec/fixtures/file_system/file_1.pdf
451
453
  - spec/fixtures/vcr_cassettes/dropbox.yml
452
454
  - spec/fixtures/vcr_cassettes/retriever.yml
@@ -458,7 +460,7 @@ test_files:
458
460
  - spec/unit/base_spec.rb
459
461
  - spec/unit/browse_everything_helper_spec.rb
460
462
  - spec/unit/browser_spec.rb
461
- - spec/unit/drop_box_spec.rb
463
+ - spec/unit/dropbox_spec.rb
462
464
  - spec/unit/file_entry_spec.rb
463
465
  - spec/unit/file_system_spec.rb
464
466
  - spec/unit/retriever_spec.rb