paperclip-dropbox 0.0.2 → 1.0.0

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.
data/README.md CHANGED
@@ -10,7 +10,7 @@ Put it in your `Gemfile`:
10
10
  gem "paperclip-dropbox"
11
11
  ```
12
12
 
13
- And run `bundle install`.
13
+ Ano run `bundle install`.
14
14
 
15
15
  ## Usage
16
16
 
@@ -20,66 +20,114 @@ Example:
20
20
  class User < ActiveRecord::Base
21
21
  has_attached_file :avatar,
22
22
  :storage => :dropbox,
23
- :dropbox_settings => "#{Rails.root}/config/dropbox.yml"
23
+ :dropbox_credentials => "#{Rails.root}/config/dropbox.yml",
24
+ :dropbox_options => {...}
24
25
  end
25
26
  ```
26
27
 
27
28
  Valid options for `#has_attached_file` are:
28
29
 
29
- - `:dropbox_settings` – A Hash, a File, or a path to the file where your
30
+ - `:dropbox_credentials` – A Hash, a File, or a path to the file where your
30
31
  Dropbox configuration is located
31
32
 
32
- - `:dropbox_options` – This can be used to override `:dropbox_settings` (for example,
33
- you have configuration in your YAML file, but you want to override some things
34
- that are specific for that certain attribute)
33
+ - `:dropbox_options` – A Hash that accepts some Dropbox-specific options (they
34
+ are explained more below)
35
35
 
36
36
  ## Configuration
37
37
 
38
- Example (`config/dropbox.yaml`):
38
+ ### The `:dropbox_credentials` option
39
+
40
+ It's best to put your Dropbox credentials into a `dropbox.yml`, and pass the path to
41
+ that file to `:dropbox_credentials`. One example of that YAML file:
39
42
 
40
43
  ```erb
41
44
  app_key: <%= ENV["DROPBOX_APP_KEY"] %>
42
45
  app_secret: <%= ENV["DROPBOX_APP_SECRET"] %>
43
46
  access_token: <%= ENV["DROPBOX_ACCESS_TOKEN"] %>
44
47
  access_token_secret: <%= ENV["DROPBOX_ACCESS_TOKEN_SECRET"] %>
48
+ user_id: <%= ENV["DROPBOX_USER_ID"] %>
45
49
  ```
46
50
 
47
- You can also namespace them inside of `development`, `testing` and `production` environments
51
+ This is a good practice; I didn't put my credentials directly in the YAML file, but I first
52
+ set them in my system's environment variables, and then embedded them here through ERB.
53
+
54
+ Note that all credentials mentioned here are required.
55
+
56
+ - If you don't have your app key and secret yet, go to your
57
+ [Dropbox apps](https://www.dropbox.com/developers/apps), and create a new app there, which
58
+ will then provide you the app key and secret. Note that your app has to have the
59
+ **Full Dropbox** access level (not the "App folder"). This is because the uploaded files
60
+ have to be stored in your `Public` directory, otherwise accessing their URLs
61
+ would be too slow.
62
+
63
+ - If you already have your app key and secret, you can obtain the rest of
64
+ the credentials through the `dropbox:authorize` rake task, which is described in
65
+ more detail at the bottom of the page.
66
+
67
+ You can also namespace your credentials in `development`, `testing` and `production` environments
48
68
  (just like you do in your `database.yml`).
49
69
 
50
- There are 3 more **optional** configurations:
70
+ ### The `:dropbox_options` option
51
71
 
52
- - `:access_type` This is either `"app_folder"` or `"dropbox"` (defaults to `"app_folder"`)
53
- - `:path` – Similar to Paperclip's `:path` option (defaults to `"<filename>"`)
54
- - `:environment` – Here you can set your environment if you're in a non-Rails application
72
+ You can pass it 3 options:
55
73
 
56
- ### The `:path` option
74
+ - `:path` – A block, provides similar results as Paperclip's `:path` option
75
+ - `:environment` – If you namespaced you credentials with environments, here you
76
+ can set your environment if you're in a non-Rails application
77
+ - `:unique_filename` – Boolean
57
78
 
58
- Let's say we've set `:path => "<table_name>/<record_id>_<attachment_name>_<filename>"`. If a user with the ID of `13`
59
- uploads `photo.jpg` for his avatar, the file would be saved to
79
+ The `:path` option works in this way; you give it a block, and the return value
80
+ will be the path that the uploaded file will be saved to. The block yields the style (if any),
81
+ and is executed in the scope of the class' instance. For example, let's say you have
82
+
83
+ ```ruby
84
+ class User < ActiveRecord::Base
85
+ has_attached_file :avatar,
86
+ :storage => :dropbox,
87
+ :dropbox_credentials => "...",
88
+ :dropbox_options => {
89
+ :path => proc { |style| "#{style}/#{id}_#{avatar.original_filename}"}
90
+ },
91
+ :styles => { :medium => "300x300" }
92
+ end
93
+ ```
94
+
95
+ Let's say now that a user is saved in the database, with a `photo.jpg` as his
96
+ avatar. The path where that files were saved could look something like this:
60
97
 
61
98
  ```
62
- users/13_avatar_photo.jpg
99
+ Public/original/23_photo.jpg
100
+ Public/medium/23_photo_medium.jpg
63
101
  ```
64
102
 
65
- The keywords are: `<filename>`, `<table_name>`, `<model_name>`,
66
- `<attachment_name>` and `<style>`. Additionally, if you want to use any of the record's attributes,
67
- just prefix them with `record_` (like the `<record_id>` above).
103
+ The other file is called `photo_medium.jpg` because style names (other than `original`)
104
+ will always be appended to the filenames.
68
105
 
69
- Files in Dropbox inside a certain folder have to have unique filenames, otherwise exception
106
+ Files in Dropbox inside a certain folder have to have **unique filenames**, otherwise exception
70
107
  `Paperclip::Storage::Dropbox::FileExists` is thrown. To help you with that, you
71
- can pass in `:unique_filename => true` to the Dropbox configuration, which will
72
- ensure uniqueness of the filenames (this is the same as passing `:path => "<model_name>_<record_id>_<attachment_name>"`).
108
+ can pass in `:unique_filename => true` to `:dropbox_options`, and that will set
109
+ `:path` to something that will be unique.
73
110
 
74
- ### Obtaining the access token
111
+ ### The `dropbox:authorize` rake task
75
112
 
76
- To obtain the access token, you can use the following rake task:
113
+ You just provide it your app key and secret:
77
114
 
78
115
  ```
79
116
  $ rake dropbox:authorize APP_KEY=your_app_key APP_SECRET=your_app_secret
80
117
  ```
81
118
 
82
- And just follow the instructions.
119
+ It will provide you an authorization URL which you have to visit, and after that
120
+ it will output the rest of your credentials, which you just copy-paste wherever
121
+ you need to.
122
+
123
+ If you're in a non-Rails application, to get this task, you must require it in
124
+ your `Rakefile`:
125
+
126
+ ```ruby
127
+ # Rakefile
128
+ require "rake"
129
+ require "paperclip/dropbox/rake"
130
+ ```
83
131
 
84
132
  ## License
85
133
 
data/UPGRADING ADDED
@@ -0,0 +1,7 @@
1
+ ########################################
2
+ # NOTE FOR UPGRADING FROM 0.x VERSIONS #
3
+ ########################################
4
+
5
+ paperclip-dropbox 1.0 is a rewrite of 0.x versions,
6
+ and it introduces a lot of non-backwards compatible changes.
7
+ It is suggested that you read the Readme again.
@@ -0,0 +1,9 @@
1
+ module Paperclip
2
+ module Dropbox
3
+ class Railtie < Rails::Railtie
4
+ rake_tasks do
5
+ load "paperclip/dropbox/tasks/authorize.rake"
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,38 @@
1
+ require "dropbox_sdk"
2
+
3
+ module Paperclip
4
+ module Dropbox
5
+ module Rake
6
+ extend self
7
+
8
+ def authorize(app_key, app_secret)
9
+ session = create_new_session(app_key, app_secret)
10
+ puts "Visit this URL: #{session.get_authorize_url}"
11
+ print "And after you approved the authorization confirm it here (y/n): "
12
+ assert_answer!
13
+ session.get_access_token
14
+ dropbox_client = DropboxClient.new(session, "dropbox")
15
+ account_info = dropbox_client.account_info
16
+
17
+ puts <<-MESSAGE
18
+ Authorization was successful. Here you go:
19
+
20
+ access_token: #{session.access_token.key}
21
+ access_token_secret: #{session.access_token.secret}
22
+ user_id: #{account_info["uid"]}
23
+ MESSAGE
24
+ end
25
+
26
+ def create_new_session(app_key, app_secret)
27
+ DropboxSession.new(app_key, app_secret)
28
+ end
29
+
30
+ def assert_answer!
31
+ answer = STDIN.gets.strip
32
+ exit if answer == "n"
33
+ end
34
+ end
35
+ end
36
+ end
37
+
38
+ load "paperclip/dropbox/tasks/authorize.rake"
@@ -0,0 +1,9 @@
1
+ require "rake"
2
+ require "paperclip/dropbox/rake" unless defined?(Paperclip::Dropbox::Rake)
3
+
4
+ namespace :dropbox do
5
+ desc "Obtains your credentials"
6
+ task :authorize do
7
+ Paperclip::Dropbox::Rake.authorize(ENV["APP_KEY"], ENV["APP_SECRET"])
8
+ end
9
+ end
@@ -0,0 +1,2 @@
1
+ require "paperclip/storage/dropbox"
2
+ require "paperclip/dropbox/railtie" if defined?(Rails)
@@ -1,5 +1,6 @@
1
1
  require 'dropbox_sdk'
2
2
  require 'active_support/core_ext/hash/keys'
3
+ require 'active_support/core_ext/hash/slice'
3
4
  require 'active_support/inflector/methods'
4
5
  require 'yaml'
5
6
  require 'erb'
@@ -7,43 +8,24 @@ require 'erb'
7
8
  module Paperclip
8
9
  module Storage
9
10
  module Dropbox
10
- attr_reader :dropbox_client
11
-
12
11
  def self.extended(base)
13
12
  base.instance_eval do
14
- @dropbox_settings = parse_settings(@options[:dropbox_settings] || {})
15
- @dropbox_settings.update(@options[:dropbox_options] || {})
16
-
17
- session = DropboxSession.new(@dropbox_settings[:app_key], @dropbox_settings[:app_secret])
18
- session.set_access_token(@dropbox_settings[:access_token], @dropbox_settings[:access_token_secret])
19
-
20
- @dropbox_client = DropboxClient.new(session, @dropbox_settings[:access_type] || :app_folder)
21
-
22
- @dropbox_keywords = Hash.new do |hash, key|
23
- if key =~ /^\<record_.+\>$/
24
- attribute = key.match(/^\<record_(.+)\>$/)[1]
25
- hash[key] = lambda { |style| instance.send(attribute) }
26
- end
27
- end
28
- @dropbox_keywords.update(
29
- "<model_name>" => lambda { |style| instance.class.table_name.singularize },
30
- "<table_name>" => lambda { |style| instance.class.table_name },
31
- "<filename>" => lambda { |style| original_filename.match(/\.\w{3,4}$/).pre_match },
32
- "<attachment_name>" => lambda { |style| name },
33
- "<style>" => lambda { |style| style }
34
- )
13
+ @dropbox_credentials = parse_credentials(@options[:dropbox_credentials] || {})
14
+ @dropbox_options = @options[:dropbox_options] || {}
15
+ environment = defined?(Rails) ? Rails.env : @dropbox_options[:environment].to_s
16
+ @dropbox_credentials = (@dropbox_credentials[environment] || @dropbox_credentials).symbolize_keys
17
+ dropbox_client # Force validations of credentials
35
18
  end
36
19
  end
37
20
 
38
21
  def flush_writes
39
22
  @queued_for_write.each do |style, file|
40
23
  unless exists?(style)
41
- response = dropbox_client.put_file(path(style), file.read)
24
+ dropbox_client.put_file(path(style), file.read)
42
25
  else
43
- raise FileExists, "\"#{path(style)}\" already exists on Dropbox"
26
+ raise FileExists, "file \"#{path(style)}\" already exists on Dropbox"
44
27
  end
45
28
  end
46
-
47
29
  after_flush_writes
48
30
  @queued_for_write = {}
49
31
  end
@@ -56,7 +38,9 @@ module Paperclip
56
38
  end
57
39
 
58
40
  def exists?(style)
59
- !!url(style)
41
+ !!dropbox_client.media(path(style))
42
+ rescue DropboxError
43
+ false
60
44
  end
61
45
 
62
46
  def url(*args)
@@ -64,23 +48,18 @@ module Paperclip
64
48
  options = args.last.is_a?(Hash) ? args.last : {}
65
49
  query = options[:download] ? "?dl=1" : ""
66
50
 
67
- dropbox_client.media(path(style).to_s)["url"] + query
68
-
69
- rescue DropboxError
70
- nil
51
+ File.join("http://dl.dropbox.com/u/#{user_id}", path_for_url(style) + query)
71
52
  end
72
53
 
73
54
  def path(style)
74
- extension = original_filename[/\.\w{3,4}$/]
75
- result = file_path
76
- file_path.scan(/\<\w+\>/).each do |keyword|
77
- result.sub!(keyword, @dropbox_keywords[keyword].call(style).to_s)
78
- end
79
- style_suffix = style != default_style ? "_#{style}" : ""
80
- result = "#{result}#{style_suffix}#{extension}"
55
+ File.join("Public", path_for_url(style))
56
+ end
81
57
 
82
- rescue
83
- nil
58
+ def path_for_url(style)
59
+ result = instance.instance_exec(style, &file_path)
60
+ result += extension if result !~ /\.\w{3,4}$/
61
+ style_suffix = (style != default_style ? "_#{style}" : "")
62
+ result.sub(extension, "#{style_suffix}#{extension}")
84
63
  end
85
64
 
86
65
  def copy_to_local_file(style, destination_path)
@@ -91,37 +70,56 @@ module Paperclip
91
70
 
92
71
  private
93
72
 
73
+ def extension
74
+ original_filename[/\.\w{3,4}$/]
75
+ end
76
+
77
+ def user_id
78
+ @dropbox_credentials[:user_id]
79
+ end
80
+
94
81
  def file_path
95
- return @dropbox_settings[:path] if @dropbox_settings[:path]
82
+ return @dropbox_options[:path] if @dropbox_options[:path]
96
83
 
97
- if @dropbox_settings[:unique_filename]
98
- "<model_name>_<record_id>_<attachment_name>"
84
+ if @dropbox_options[:unique_filename]
85
+ eval %(proc { |style| "\#{self.class.model_name.underscore}_\#{id}_\#{#{name}.name}" })
99
86
  else
100
- "<filename>"
87
+ eval %(proc { |style| #{name}.original_filename })
101
88
  end
102
89
  end
103
90
 
104
- def parse_settings(settings)
105
- settings = settings.respond_to?(:call) ? settings.call : settings
106
- settings = get_settings(settings).stringify_keys
107
- environment = defined?(Rails) ? Rails.env : @dropbox_settings[:environment].to_s
108
- (settings[environment] || settings).symbolize_keys
91
+ def dropbox_client
92
+ @dropbox_client ||= begin
93
+ assert_required_keys
94
+ session = DropboxSession.new(@dropbox_credentials[:app_key], @dropbox_credentials[:app_secret])
95
+ session.set_access_token(@dropbox_credentials[:access_token], @dropbox_credentials[:access_token_secret])
96
+ DropboxClient.new(session, "dropbox")
97
+ end
109
98
  end
110
99
 
111
- def get_settings(settings)
112
- case settings
113
- when File
114
- YAML.load(ERB.new(File.read(settings.path)).result)
115
- when String, Pathname
116
- YAML.load(ERB.new(File.read(settings)).result)
117
- when Hash
118
- settings
119
- else
120
- raise ArgumentError, "settings are not a path, file, or hash."
100
+ def assert_required_keys
101
+ [:app_key, :app_secret, :access_token, :access_token_secret, :user_id].each do |key|
102
+ @dropbox_credentials.fetch(key)
121
103
  end
122
104
  end
123
105
 
124
- class FileExists < RuntimeError
106
+ def parse_credentials(credentials)
107
+ result =
108
+ case credentials
109
+ when File
110
+ YAML.load(ERB.new(File.read(credentials.path)).result)
111
+ when String, Pathname
112
+ YAML.load(ERB.new(File.read(credentials)).result)
113
+ when Hash
114
+ credentials
115
+ else
116
+ raise ArgumentError, ":dropbox_credentials are not a path, file, nor a hash"
117
+ end
118
+
119
+ result.stringify_keys
120
+ end
121
+
122
+ class FileExists < ArgumentError
125
123
  end
126
124
  end
127
125
  end
@@ -1,2 +1,2 @@
1
- require "paperclip/storage/dropbox"
2
- require "paperclip/storage/dropbox/railtie" if defined?(Rails)
1
+ require "paperclip"
2
+ require "paperclip/dropbox"
@@ -2,18 +2,31 @@
2
2
 
3
3
  Gem::Specification.new do |gem|
4
4
  gem.name = "paperclip-dropbox"
5
- gem.version = "0.0.2"
5
+ gem.version = "1.0.0"
6
+ gem.platform = Gem::Platform::RUBY
6
7
 
7
- gem.authors = ["Janko Marohnić"]
8
- gem.email = ["janko.marohnic@gmail.com"]
8
+ gem.homepage = "https://github.com/janko-m/paperclip-dropbox"
9
9
  gem.description = %q{Extends Paperclip with Dropbox storage.}
10
10
  gem.summary = gem.description
11
- gem.homepage = "https://github.com/janko-m/paperclip-dropbox"
11
+ gem.authors = ["Janko Marohnić"]
12
+ gem.email = ["janko.marohnic@gmail.com"]
13
+
14
+ gem.files = Dir["lib/**/*"] + ["README.md", "UPGRADING", "paperclip-dropbox.gemspec"]
15
+ gem.require_path = "lib"
12
16
 
13
- gem.files = `git ls-files`.split($\)
14
- gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
15
- gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
16
- gem.require_paths = ["lib"]
17
+ gem.required_ruby_version = ">= 1.9.2"
17
18
 
19
+ gem.license = "MIT"
20
+ gem.post_install_message = File.read("UPGRADING")
21
+
22
+ gem.add_dependency "paperclip", "~> 3.1"
18
23
  gem.add_dependency "dropbox-sdk", "~> 1.3"
24
+
25
+ gem.add_development_dependency "rake", "~> 0.9"
26
+ gem.add_development_dependency "rspec", "~> 2.11"
27
+ gem.add_development_dependency "vcr", "~> 2.2"
28
+ gem.add_development_dependency "fakeweb", "~> 1.3"
29
+ gem.add_development_dependency "activerecord", "~> 3.2"
30
+ gem.add_development_dependency "rack-test", "~> 0.6"
31
+ gem.add_development_dependency "sqlite3", "~> 1.3"
19
32
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: paperclip-dropbox
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 1.0.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,8 +9,24 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-08-28 00:00:00.000000000 Z
12
+ date: 2012-09-03 00:00:00.000000000 Z
13
13
  dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: paperclip
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: '3.1'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: '3.1'
14
30
  - !ruby/object:Gem::Dependency
15
31
  name: dropbox-sdk
16
32
  requirement: !ruby/object:Gem::Requirement
@@ -27,6 +43,118 @@ dependencies:
27
43
  - - ~>
28
44
  - !ruby/object:Gem::Version
29
45
  version: '1.3'
46
+ - !ruby/object:Gem::Dependency
47
+ name: rake
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ~>
52
+ - !ruby/object:Gem::Version
53
+ version: '0.9'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: '0.9'
62
+ - !ruby/object:Gem::Dependency
63
+ name: rspec
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ~>
68
+ - !ruby/object:Gem::Version
69
+ version: '2.11'
70
+ type: :development
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ~>
76
+ - !ruby/object:Gem::Version
77
+ version: '2.11'
78
+ - !ruby/object:Gem::Dependency
79
+ name: vcr
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ~>
84
+ - !ruby/object:Gem::Version
85
+ version: '2.2'
86
+ type: :development
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ~>
92
+ - !ruby/object:Gem::Version
93
+ version: '2.2'
94
+ - !ruby/object:Gem::Dependency
95
+ name: fakeweb
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ~>
100
+ - !ruby/object:Gem::Version
101
+ version: '1.3'
102
+ type: :development
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ~>
108
+ - !ruby/object:Gem::Version
109
+ version: '1.3'
110
+ - !ruby/object:Gem::Dependency
111
+ name: activerecord
112
+ requirement: !ruby/object:Gem::Requirement
113
+ none: false
114
+ requirements:
115
+ - - ~>
116
+ - !ruby/object:Gem::Version
117
+ version: '3.2'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ~>
124
+ - !ruby/object:Gem::Version
125
+ version: '3.2'
126
+ - !ruby/object:Gem::Dependency
127
+ name: rack-test
128
+ requirement: !ruby/object:Gem::Requirement
129
+ none: false
130
+ requirements:
131
+ - - ~>
132
+ - !ruby/object:Gem::Version
133
+ version: '0.6'
134
+ type: :development
135
+ prerelease: false
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ none: false
138
+ requirements:
139
+ - - ~>
140
+ - !ruby/object:Gem::Version
141
+ version: '0.6'
142
+ - !ruby/object:Gem::Dependency
143
+ name: sqlite3
144
+ requirement: !ruby/object:Gem::Requirement
145
+ none: false
146
+ requirements:
147
+ - - ~>
148
+ - !ruby/object:Gem::Version
149
+ version: '1.3'
150
+ type: :development
151
+ prerelease: false
152
+ version_requirements: !ruby/object:Gem::Requirement
153
+ none: false
154
+ requirements:
155
+ - - ~>
156
+ - !ruby/object:Gem::Version
157
+ version: '1.3'
30
158
  description: Extends Paperclip with Dropbox storage.
31
159
  email:
32
160
  - janko.marohnic@gmail.com
@@ -34,19 +162,32 @@ executables: []
34
162
  extensions: []
35
163
  extra_rdoc_files: []
36
164
  files:
37
- - .gitignore
38
- - Gemfile
39
- - LICENSE
40
- - README.md
41
- - Rakefile
42
- - lib/paperclip-dropbox.rb
165
+ - lib/paperclip/dropbox/railtie.rb
166
+ - lib/paperclip/dropbox/rake.rb
167
+ - lib/paperclip/dropbox/tasks/authorize.rake
168
+ - lib/paperclip/dropbox.rb
43
169
  - lib/paperclip/storage/dropbox.rb
44
- - lib/paperclip/storage/dropbox/railtie.rb
45
- - lib/tasks/paperclip-dropbox.rake
170
+ - lib/paperclip-dropbox.rb
171
+ - README.md
172
+ - UPGRADING
46
173
  - paperclip-dropbox.gemspec
47
174
  homepage: https://github.com/janko-m/paperclip-dropbox
48
- licenses: []
49
- post_install_message:
175
+ licenses:
176
+ - MIT
177
+ post_install_message: ! '########################################
178
+
179
+ # NOTE FOR UPGRADING FROM 0.x VERSIONS #
180
+
181
+ ########################################
182
+
183
+
184
+ paperclip-dropbox 1.0 is a rewrite of 0.x versions,
185
+
186
+ and it introduces a lot of non-backwards compatible changes.
187
+
188
+ It is suggested that you read the Readme again.
189
+
190
+ '
50
191
  rdoc_options: []
51
192
  require_paths:
52
193
  - lib
@@ -55,13 +196,16 @@ required_ruby_version: !ruby/object:Gem::Requirement
55
196
  requirements:
56
197
  - - ! '>='
57
198
  - !ruby/object:Gem::Version
58
- version: '0'
199
+ version: 1.9.2
59
200
  required_rubygems_version: !ruby/object:Gem::Requirement
60
201
  none: false
61
202
  requirements:
62
203
  - - ! '>='
63
204
  - !ruby/object:Gem::Version
64
205
  version: '0'
206
+ segments:
207
+ - 0
208
+ hash: -407876590355858584
65
209
  requirements: []
66
210
  rubyforge_project:
67
211
  rubygems_version: 1.8.23
@@ -69,4 +213,3 @@ signing_key:
69
213
  specification_version: 3
70
214
  summary: Extends Paperclip with Dropbox storage.
71
215
  test_files: []
72
- has_rdoc:
data/.gitignore DELETED
@@ -1,17 +0,0 @@
1
- *.gem
2
- *.rbc
3
- .bundle
4
- .config
5
- .yardoc
6
- Gemfile.lock
7
- InstalledFiles
8
- _yardoc
9
- coverage
10
- doc/
11
- lib/bundler/man
12
- pkg
13
- rdoc
14
- spec/reports
15
- test/tmp
16
- test/version_tmp
17
- tmp
data/Gemfile DELETED
@@ -1,3 +0,0 @@
1
- source :rubygems
2
-
3
- gemspec
data/LICENSE DELETED
@@ -1,22 +0,0 @@
1
- Copyright (c) 2012 Janko Marohnić
2
-
3
- MIT License
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining
6
- a copy of this software and associated documentation files (the
7
- "Software"), to deal in the Software without restriction, including
8
- without limitation the rights to use, copy, modify, merge, publish,
9
- distribute, sublicense, and/or sell copies of the Software, and to
10
- permit persons to whom the Software is furnished to do so, subject to
11
- the following conditions:
12
-
13
- The above copyright notice and this permission notice shall be
14
- included in all copies or substantial portions of the Software.
15
-
16
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/Rakefile DELETED
@@ -1,2 +0,0 @@
1
- #!/usr/bin/env rake
2
- require "bundler/gem_tasks"
@@ -1,11 +0,0 @@
1
- module Paperclip
2
- module Storage
3
- module Dropbox
4
- class Railtie < Rails::Railtie
5
- rake_tasks do
6
- load "tasks/paperclip-dropbox.rake"
7
- end
8
- end
9
- end
10
- end
11
- end
@@ -1,16 +0,0 @@
1
- require 'rake'
2
- require 'dropbox_sdk'
3
-
4
- namespace :dropbox do
5
- desc "Obtain your access token"
6
- task :authorize do
7
- session = DropboxSession.new(ENV["APP_KEY"], ENV["APP_SECRET"])
8
- puts "Visit this URL: #{session.get_authorize_url}"
9
- print "And after you approved the authorization confirm it here (y/n): "
10
- answer = STDIN.gets.strip
11
- exit if answer == "n"
12
- session.get_access_token
13
- puts "Access token: #{session.access_token.key}"
14
- puts "Access token secret: #{session.access_token.secret}"
15
- end
16
- end