cloudinary 1.0.55 → 1.0.56

Sign up to get free protection for your applications and to get access to all the features.
@@ -35,19 +35,18 @@ module Cloudinary::CarrierWave
35
35
  if args.first && !args.first.is_a?(Hash)
36
36
  super
37
37
  else
38
+ options = args.extract_options!
38
39
  if self.blank?
39
40
  url = self.default_url
40
41
  return url if !url.blank?
41
42
  public_id = self.default_public_id
42
43
  return nil if public_id.nil?
43
44
  else
44
- public_id = self.full_public_id
45
+ public_id = options.include?(:version) ? self.my_public_id : self.full_public_id
45
46
  end
46
- options = args.extract_options!
47
47
  options = self.transformation.merge(options) if self.version_name.present?
48
48
 
49
- resource_type = Cloudinary::Utils.resource_type_for_format(self.filename || self.format)
50
- Cloudinary::Utils.cloudinary_url(public_id, {:format=>self.format, :resource_type=>resource_type, :type=>self.storage_type}.merge(options))
49
+ Cloudinary::Utils.cloudinary_url(public_id, {:format=>self.format, :resource_type=>self.resource_type, :type=>self.storage_type}.merge(options))
51
50
  end
52
51
  end
53
52
 
@@ -94,12 +93,11 @@ module Cloudinary::CarrierWave
94
93
  return if from_public_id == to_public_id
95
94
 
96
95
  @public_id = @stored_public_id = to_public_id
97
- resource_type = Cloudinary::Utils.resource_type_for_format(self.format)
98
- if resource_type == 'raw'
96
+ if self.resource_type == 'raw'
99
97
  from_public_id = [from_public_id, self.format].join(".")
100
98
  to_public_id = [to_public_id, self.format].join(".")
101
99
  end
102
- Cloudinary::Uploader.rename(from_public_id, to_public_id, :type=>self.storage_type, :resource_type=>resource_type, :overwrite=>overwrite)
100
+ Cloudinary::Uploader.rename(from_public_id, to_public_id, :type=>self.storage_type, :resource_type=>self.resource_type, :overwrite=>overwrite)
103
101
  storage.store_cloudinary_identifier(@stored_version, [@public_id, self.format].join("."))
104
102
  end
105
103
 
@@ -142,9 +140,9 @@ module Cloudinary::CarrierWave
142
140
  @uploader = uploader
143
141
  @identifier = identifier
144
142
 
145
- if @identifier.include?("/")
146
- version, @filename = @identifier.split("/", 2)
147
- @version = version[1..-1] # remove 'v' prefix
143
+ if @identifier.match(%r(^v([0-9]+)/(.*)))
144
+ @version = $1
145
+ @filename = $2
148
146
  else
149
147
  @filename = @identifier
150
148
  @version = nil
@@ -152,7 +150,7 @@ module Cloudinary::CarrierWave
152
150
 
153
151
  @storage_type = uploader.class.storage_type
154
152
  @resource_type = Cloudinary::Utils.resource_type_for_format(@filename)
155
- @public_id, @format = Cloudinary::CarrierWave.split_format(@filename)
153
+ @public_id, @format = Cloudinary::PreloadedFile.split_format(@filename)
156
154
  end
157
155
 
158
156
  def delete
@@ -170,15 +168,16 @@ module Cloudinary::CarrierWave
170
168
  end
171
169
 
172
170
  end
173
-
171
+
172
+ # @deprecated
174
173
  def self.split_format(identifier)
175
- last_dot = identifier.rindex(".")
176
- return [identifier, nil] if last_dot.nil?
177
- public_id = identifier[0, last_dot]
178
- format = identifier[last_dot+1..-1]
179
- return [public_id, format]
174
+ return Cloudinary::PreloadedFile.split_format(identifier)
180
175
  end
181
176
 
177
+ def resource_type
178
+ Cloudinary::Utils.resource_type_for_format(self.filename || self.format)
179
+ end
180
+
182
181
  # For the given methods - versions should call the main uploader method
183
182
  def self.override_in_versions(base, *methods)
184
183
  methods.each do
@@ -38,7 +38,6 @@ module Cloudinary::CarrierWave
38
38
  class PreloadedCloudinaryFile < Cloudinary::PreloadedFile
39
39
  def initialize(file_info)
40
40
  super
41
- raise CloudinaryException, "Cloudinary CarrierWave integration only supports uploaded images" if resource_type != "image" || type != "upload"
42
41
  if !valid?
43
42
  raise CarrierWave::IntegrityError, I18n.translate(:"errors.messages.cloudinary_signature_error", :public_id=>public_id, :default=>"Invalid signature for #{public_id}")
44
43
  end
@@ -140,7 +140,7 @@ module Cloudinary::CarrierWave
140
140
  format = uploader.format
141
141
  else
142
142
  # Try to auto-detect format
143
- format = Cloudinary::CarrierWave.split_format(original_filename || "").last
143
+ format = Cloudinary::PreloadedFile.split_format(original_filename || "").last
144
144
  format ||= "png" # TODO Default format?
145
145
  end
146
146
  format = format.to_s.downcase
@@ -5,6 +5,8 @@ class Cloudinary::CarrierWave::Storage < ::CarrierWave::Storage::Abstract
5
5
  if uploader.is_main_uploader?
6
6
  case file
7
7
  when Cloudinary::CarrierWave::PreloadedCloudinaryFile
8
+ storage_type = uploader.class.storage_type || "upload"
9
+ raise CloudinaryException, "Uploader configured for type #{storage_type} but resource of type #{file.type} given." if storage_type != file.type
8
10
  if uploader.public_id && uploader.auto_rename_preloaded?
9
11
  @stored_version = file.version
10
12
  uploader.rename(nil, true)
@@ -4,10 +4,11 @@ class Cloudinary::PreloadedFile
4
4
  attr_reader :filename, :version, :public_id, :signature, :resource_type, :type
5
5
  def initialize(file_info)
6
6
  @resource_type, @type, @version, @filename, @signature = file_info.scan(PRELOADED_CLOUDINARY_PATH).first
7
- @public_id = @resource_type == "image" ? @filename[0..(@filename.rindex(".")-1)] : @filename
7
+ @public_id, @format = Cloudinary::PreloadedFile.split_format(@filename)
8
8
  end
9
9
 
10
10
  def valid?
11
+ public_id = @resource_type == "raw" ? self.filename : self.public_id
11
12
  expected_signature = Cloudinary::Utils.api_sign_request({:public_id=>public_id, :version=>version}, Cloudinary.config.api_secret)
12
13
  @signature == expected_signature
13
14
  end
@@ -19,5 +20,13 @@ class Cloudinary::PreloadedFile
19
20
  def to_s
20
21
  "#{resource_type}/#{type}/v#{version}/#{filename}##{signature}"
21
22
  end
23
+
24
+ def self.split_format(identifier)
25
+ last_dot = identifier.rindex(".")
26
+ return [identifier, nil] if last_dot.nil?
27
+ public_id = identifier[0, last_dot]
28
+ format = identifier[last_dot+1..-1]
29
+ return [public_id, format]
30
+ end
22
31
 
23
32
  end
@@ -1,4 +1,4 @@
1
1
  # Copyright Cloudinary
2
2
  module Cloudinary
3
- VERSION = "1.0.55"
3
+ VERSION = "1.0.56"
4
4
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cloudinary
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.55
4
+ version: 1.0.56
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2013-04-19 00:00:00.000000000 Z
14
+ date: 2013-04-24 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: rest-client