paperclip-dropbox 1.2.2 → 1.3.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 82a48be0e2e60062a9c7f14d8e9faa635d977597
4
- data.tar.gz: f688b640ae8720ef011108d7cafd4ff66d4d1aaf
3
+ metadata.gz: 2dc05c507ab4911452e94f9c9a8fbc95254c9472
4
+ data.tar.gz: 014650ee8b6e82eef6bdb8a93e659cf409d632e1
5
5
  SHA512:
6
- metadata.gz: c4c2d9339e53b4eb35e7ec6da664a381a37dabb636065534e59c404fd7e7983599e8db9489b2e5da6e10e967ffc6dc0eccb4f8ebc61d3ff1615eb4f9a971e060
7
- data.tar.gz: 56014bbbd22588a2cab44275f895ac04ff38310dd00235d836084b05d23e3435230d9fc486dba4defba0ba6da6a7b9a9120c5f3b8dee8c8bf9174eb31f856065
6
+ metadata.gz: 101c4d07cd070ee970bebeabd082b9d8c202f57ee06f7b06b2722b0c0f35a9efa4ed65487fd15e42c161338498a97decb60b075c5cb84e6bf48fd9cf487f90c9
7
+ data.tar.gz: 107be6c531a3534f1e7bdacdb354c2835a76aa5cdd23cac02ed59106ab03edfa49614fa85f8669039396af6c0af976beed86cb9e194a6d7d2fd91ae16fd8ff27
data/README.md CHANGED
@@ -31,6 +31,9 @@ user_id: "..."
31
31
  access_type: "dropbox|app_folder"
32
32
  ```
33
33
 
34
+ You can also pass a `Proc` to `:dropbox_credentials`, if you want the
35
+ credentials to be dynamically evaluated.
36
+
34
37
  In order to fill these in, you must [create a Dropbox app](https://www.dropbox.com/developers/apps)
35
38
  and authorize it. There are two types of Dropbox apps: **App folder** or **Full Dropbox**. You can read
36
39
  about the differences and gotchas in [this wiki](https://github.com/janko-m/paperclip-dropbox/wiki/Access-types).
@@ -5,9 +5,10 @@ module Paperclip
5
5
  module Dropbox
6
6
  module GeneratorFactory
7
7
  def self.build_url_generator(storage, options)
8
- if options[:dropbox_credentials][:access_type] == "app_folder" || options[:dropbox_visibility] == "private"
8
+ credentials = storage.try(:dropbox_credentials) || options[:dropbox_credentials]
9
+ if credentials[:access_type] == "app_folder" || options[:dropbox_visibility] == "private"
9
10
  PrivateUrlGenerator.new(storage, options)
10
- elsif options[:dropbox_credentials][:access_type]
11
+ elsif credentials[:access_type]
11
12
  PublicUrlGenerator.new(storage, options)
12
13
  end
13
14
  end
@@ -11,14 +11,12 @@ module Paperclip
11
11
  def self.extended(base)
12
12
  base.instance_eval do
13
13
  @options[:dropbox_options] ||= {}
14
- @options[:dropbox_credentials] = fetch_credentials
15
14
  @options[:path] = nil if @options[:path] == self.class.default_options[:path]
16
15
  @options[:dropbox_visibility] ||= "public"
17
16
 
18
17
  @path_generator = PathGenerator.new(self, @options)
19
- @url_generator = GeneratorFactory.build_url_generator(self, @options)
20
18
 
21
- dropbox_client # Force creation of dropbox_client
19
+ #dropbox_client # Force creation of dropbox_client
22
20
  end
23
21
  end
24
22
 
@@ -40,7 +38,7 @@ module Paperclip
40
38
  def url(style_or_options = default_style, options = {})
41
39
  options.merge!(style_or_options) if style_or_options.is_a?(Hash)
42
40
  style = style_or_options.is_a?(Hash) ? default_style : style_or_options
43
- @url_generator.generate(style, options)
41
+ url_generator.generate(style, options)
44
42
  end
45
43
 
46
44
  def path(style = default_style)
@@ -65,25 +63,37 @@ module Paperclip
65
63
 
66
64
  def dropbox_client
67
65
  @dropbox_client ||= begin
68
- @options[:dropbox_credentials][:access_type] ||= "dropbox"
69
- credentials = @options[:dropbox_credentials]
66
+ credentials = dropbox_credentials
70
67
  session = DropboxSession.new(credentials[:app_key], credentials[:app_secret])
71
68
  session.set_access_token(credentials[:access_token], credentials[:access_token_secret])
72
69
  DropboxClient.new(session, credentials[:access_type])
73
70
  end
74
71
  end
75
72
 
73
+ def dropbox_credentials
74
+ @dropbox_credentials ||= begin
75
+ creds = fetch_credentials
76
+ creds[:access_type] ||= 'dropbox'
77
+ creds
78
+ end
79
+ end
80
+
81
+ def url_generator
82
+ @url_generator = GeneratorFactory.build_url_generator(self, @options)
83
+ end
84
+
76
85
  def public_dropbox?
77
- @options[:dropbox_credentials][:access_type] == "dropbox" &&
86
+ dropbox_credentials[:access_type] == "dropbox" &&
78
87
  @options[:dropbox_visibility] == "public"
79
88
  end
80
89
 
81
-
82
90
  private
83
91
 
84
92
  def fetch_credentials
93
+ credentials = @options[:dropbox_credentials].respond_to?('call') ? @options[:dropbox_credentials].call(self) : @options[:dropbox_credentials]
94
+
85
95
  environment = defined?(Rails) ? Rails.env : @options[:dropbox_options][:environment]
86
- Credentials.new(@options[:dropbox_credentials]).fetch(environment)
96
+ Credentials.new(credentials).fetch(environment)
87
97
  end
88
98
 
89
99
  class FileExists < RuntimeError
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |gem|
4
4
  gem.name = "paperclip-dropbox"
5
- gem.version = "1.2.2"
5
+ gem.version = "1.3.0"
6
6
 
7
7
  gem.homepage = "https://github.com/janko-m/paperclip-dropbox"
8
8
  gem.description = %q{Extends Paperclip with Dropbox storage.}
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: paperclip-dropbox
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.2
4
+ version: 1.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Janko Marohnić
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-06-27 00:00:00.000000000 Z
11
+ date: 2015-01-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: paperclip
@@ -176,7 +176,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
176
176
  version: '0'
177
177
  requirements: []
178
178
  rubyforge_project:
179
- rubygems_version: 2.2.2
179
+ rubygems_version: 2.4.5
180
180
  signing_key:
181
181
  specification_version: 4
182
182
  summary: Extends Paperclip with Dropbox storage.