cloudinary 1.0.49 → 1.0.50
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/lib/cloudinary/carrier_wave.rb +18 -5
- data/lib/cloudinary/carrier_wave/storage.rb +9 -3
- data/lib/cloudinary/utils.rb +6 -0
- data/lib/cloudinary/version.rb +1 -1
- data/spec/utils_spec.rb +17 -0
- metadata +2 -2
@@ -81,11 +81,19 @@ module Cloudinary::CarrierWave
|
|
81
81
|
@public_id ||= Cloudinary::Utils.random_public_id
|
82
82
|
end
|
83
83
|
|
84
|
-
def rename(to_public_id)
|
85
|
-
|
86
|
-
|
87
|
-
|
84
|
+
def rename(to_public_id = nil)
|
85
|
+
to_public_id ||= self.public_id
|
86
|
+
if self.public_id && to_public_id != self.public_id
|
87
|
+
raise CloudinaryException, "The public_id method was overridden and returns #{self.public_id} - can't rename to #{to_public_id}"
|
88
|
+
elsif to_public_id.nil?
|
89
|
+
raise CloudinaryException, "No to_public_id given"
|
90
|
+
end
|
91
|
+
|
92
|
+
from_public_id = @stored_public_id || self.my_public_id
|
93
|
+
return if from_public_id == to_public_id
|
94
|
+
|
88
95
|
@public_id = @stored_public_id = to_public_id
|
96
|
+
resource_type = Cloudinary::Utils.resource_type_for_format(self.format)
|
89
97
|
if resource_type == 'raw'
|
90
98
|
from_public_id = [from_public_id, self.format].join(".")
|
91
99
|
to_public_id = [to_public_id, self.format].join(".")
|
@@ -122,6 +130,11 @@ module Cloudinary::CarrierWave
|
|
122
130
|
true
|
123
131
|
end
|
124
132
|
|
133
|
+
# Rename preloaded uploads if public_id was overridden
|
134
|
+
def auto_rename_preloaded?
|
135
|
+
true
|
136
|
+
end
|
137
|
+
|
125
138
|
class CloudinaryFile
|
126
139
|
attr_reader :identifier, :public_id, :filename, :format, :version, :storage_type, :resource_type
|
127
140
|
def initialize(identifier, uploader)
|
@@ -129,7 +142,7 @@ module Cloudinary::CarrierWave
|
|
129
142
|
@identifier = identifier
|
130
143
|
|
131
144
|
if @identifier.include?("/")
|
132
|
-
version, @filename = @identifier.split("/")
|
145
|
+
version, @filename = @identifier.split("/", 2)
|
133
146
|
@version = version[1..-1] # remove 'v' prefix
|
134
147
|
else
|
135
148
|
@filename = @identifier
|
@@ -4,8 +4,14 @@ class Cloudinary::CarrierWave::Storage < ::CarrierWave::Storage::Abstract
|
|
4
4
|
return if !uploader.enable_processing
|
5
5
|
if uploader.is_main_uploader?
|
6
6
|
case file
|
7
|
-
when Cloudinary::CarrierWave::PreloadedCloudinaryFile
|
8
|
-
|
7
|
+
when Cloudinary::CarrierWave::PreloadedCloudinaryFile
|
8
|
+
if uploader.public_id && uploader.auto_rename_preloaded?
|
9
|
+
@stored_version = file.version
|
10
|
+
uploader.rename
|
11
|
+
else
|
12
|
+
store_cloudinary_version(file.version)
|
13
|
+
end
|
14
|
+
return
|
9
15
|
when Cloudinary::CarrierWave::CloudinaryFile
|
10
16
|
return nil # Nothing to do
|
11
17
|
when Cloudinary::CarrierWave::RemoteFile
|
@@ -43,7 +49,7 @@ class Cloudinary::CarrierWave::Storage < ::CarrierWave::Storage::Abstract
|
|
43
49
|
end
|
44
50
|
|
45
51
|
def store_cloudinary_version(version)
|
46
|
-
name = "v#{version}/#{identifier.split("/").last}"
|
52
|
+
name = "v#{version}/#{identifier.split("/", 2).last}"
|
47
53
|
model_class = uploader.model.class
|
48
54
|
column = uploader.model.send(:_mounter, uploader.mounted_as).send(:serialization_column)
|
49
55
|
if defined?(ActiveRecord::Base) && uploader.model.is_a?(ActiveRecord::Base)
|
data/lib/cloudinary/utils.rb
CHANGED
@@ -100,6 +100,7 @@ class Cloudinary::Utils
|
|
100
100
|
private_cdn = config_option_consume(options, :private_cdn)
|
101
101
|
secure_distribution = config_option_consume(options, :secure_distribution)
|
102
102
|
cname = config_option_consume(options, :cname)
|
103
|
+
shorten = config_option_consume(options, :shorten)
|
103
104
|
force_remote = options.delete(:force_remote)
|
104
105
|
cdn_subdomain = config_option_consume(options, :cdn_subdomain)
|
105
106
|
|
@@ -151,6 +152,11 @@ class Cloudinary::Utils
|
|
151
152
|
prefix += "/#{cloud_name}" if !private_cdn || (secure && secure_distribution == Cloudinary::AKAMAI_SHARED_CDN)
|
152
153
|
end
|
153
154
|
|
155
|
+
if shorten && resource_type.to_s == "image" && type.to_s == "upload"
|
156
|
+
resource_type = "iu"
|
157
|
+
type = nil
|
158
|
+
end
|
159
|
+
version ||= 1 if source.include?("/") and type != :fetch && !source.match(/^v[0-9]+/)
|
154
160
|
source = prefix + "/" + [resource_type,
|
155
161
|
type, transformation, version ? "v#{version}" : nil,
|
156
162
|
source].reject(&:blank?).join("/").gsub(%r(([^:])//), '\1/')
|
data/lib/cloudinary/version.rb
CHANGED
data/spec/utils_spec.rb
CHANGED
@@ -390,4 +390,21 @@ describe Cloudinary::Utils do
|
|
390
390
|
Cloudinary::Uploader.build_upload_params(:backup=>nil)[:backup].should be_nil
|
391
391
|
Cloudinary::Uploader.build_upload_params({})[:backup].should be_nil
|
392
392
|
end
|
393
|
+
|
394
|
+
it "should add version if public_id contains /" do
|
395
|
+
result = Cloudinary::Utils.cloudinary_url("folder/test")
|
396
|
+
result.should == "http://res.cloudinary.com/test123/image/upload/v1/folder/test"
|
397
|
+
result = Cloudinary::Utils.cloudinary_url("folder/test", :version=>123)
|
398
|
+
result.should == "http://res.cloudinary.com/test123/image/upload/v123/folder/test"
|
399
|
+
end
|
400
|
+
|
401
|
+
it "should not add version if public_id contains version already" do
|
402
|
+
result = Cloudinary::Utils.cloudinary_url("v1234/test")
|
403
|
+
result.should == "http://res.cloudinary.com/test123/image/upload/v1234/test"
|
404
|
+
end
|
405
|
+
|
406
|
+
it "should allow to shorted image/upload urls" do
|
407
|
+
result = Cloudinary::Utils.cloudinary_url("test", :shorten=>true)
|
408
|
+
result.should == "http://res.cloudinary.com/test123/iu/test"
|
409
|
+
end
|
393
410
|
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.
|
4
|
+
version: 1.0.50
|
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-03-
|
14
|
+
date: 2013-03-24 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: rest-client
|