cloudinary 1.9.1 → 1.10.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +15 -5
- data/.gitignore +1 -0
- data/CHANGELOG.md +32 -0
- data/cloudinary.gemspec +2 -1
- data/lib/cloudinary/api.rb +28 -13
- data/lib/cloudinary/cache.rb +38 -0
- data/lib/cloudinary/cache/breakpoints_cache.rb +31 -0
- data/lib/cloudinary/cache/key_value_cache_adapter.rb +25 -0
- data/lib/cloudinary/cache/rails_cache_adapter.rb +34 -0
- data/lib/cloudinary/cache/storage/rails_cache_storage.rb +5 -0
- data/lib/cloudinary/helper.rb +47 -4
- data/lib/cloudinary/responsive.rb +111 -0
- data/lib/cloudinary/uploader.rb +22 -4
- data/lib/cloudinary/utils.rb +122 -5
- data/lib/cloudinary/version.rb +1 -1
- data/spec/access_control_spec.rb +3 -0
- data/spec/api_spec.rb +19 -13
- data/spec/auth_token_spec.rb +8 -10
- data/spec/cache_spec.rb +109 -0
- data/spec/cloudinary_helper_spec.rb +147 -12
- data/spec/image_spec.rb +107 -0
- data/spec/spec_helper.rb +38 -17
- data/spec/uploader_spec.rb +23 -8
- data/spec/utils_spec.rb +46 -3
- data/spec/video_tag_spec.rb +7 -5
- data/spec/video_url_spec.rb +4 -2
- data/tools/update_version +202 -0
- metadata +83 -30
data/spec/utils_spec.rb
CHANGED
@@ -3,7 +3,9 @@ require 'cloudinary'
|
|
3
3
|
|
4
4
|
describe Cloudinary::Utils do
|
5
5
|
|
6
|
+
|
6
7
|
before :each do
|
8
|
+
Cloudinary.reset_config
|
7
9
|
Cloudinary.config do |config|
|
8
10
|
# config.cloud_name = "demo"
|
9
11
|
config.secure_distribution = nil
|
@@ -450,6 +452,12 @@ describe Cloudinary::Utils do
|
|
450
452
|
.and empty_options
|
451
453
|
end
|
452
454
|
|
455
|
+
it "should support blur effect with ocr gravity" do
|
456
|
+
expect(["test", { :effect => ["blur_region", 5000], :gravity => "ocr_text" }])
|
457
|
+
.to produce_url("#{upload_path}/e_blur_region:5000,g_ocr_text/test")
|
458
|
+
.and empty_options
|
459
|
+
end
|
460
|
+
|
453
461
|
it "should support keyframe_interval" do
|
454
462
|
expect(["test", { :keyframe_interval => 10 }])
|
455
463
|
.to produce_url("#{upload_path}/ki_10/test")
|
@@ -565,7 +573,8 @@ describe Cloudinary::Utils do
|
|
565
573
|
["text with font family and size parameters", { :text => text_layer, :font_family => "Arial", :font_size => "18" }, "text:Arial_18:#{text_encoded}"],
|
566
574
|
["text with text style parameter", { :text => text_layer, :font_family => "Arial", :font_size => "18", :font_weight => "bold", :font_style => "italic", :letter_spacing => 4, :line_spacing => 2 }, "text:Arial_18_bold_italic_letter_spacing_4_line_spacing_2:#{text_encoded}"],
|
567
575
|
["subtitles", { :resource_type => "subtitles", :public_id => "subtitles.srt" }, "subtitles:subtitles.srt"],
|
568
|
-
["subtitles with font family and size", { :resource_type => "subtitles", :public_id => "subtitles.srt", :font_family => "Arial", :font_size => "40" }, "subtitles:Arial_40:subtitles.srt"]
|
576
|
+
["subtitles with font family and size", { :resource_type => "subtitles", :public_id => "subtitles.srt", :font_family => "Arial", :font_size => "40" }, "subtitles:Arial_40:subtitles.srt"],
|
577
|
+
["image of type fetch", { :public_id => "http://res.cloudinary.com/demo/image/upload/ci", :type => "fetch" }, "fetch:aHR0cDovL3Jlcy5jbG91ZGluYXJ5LmNvbS9kZW1vL2ltYWdlL3VwbG9hZC9jaQ=="]
|
569
578
|
]
|
570
579
|
layers_options.each do |name, options, result|
|
571
580
|
it "should support #{name}" do
|
@@ -617,8 +626,8 @@ describe Cloudinary::Utils do
|
|
617
626
|
end
|
618
627
|
|
619
628
|
it "should support extenal cname with cdn_subdomain on" do
|
620
|
-
expect(["test", { :cname => "hello.com", :cdn_subdomain => true
|
621
|
-
.to produce_url("http://a2.hello.com
|
629
|
+
expect(["test", { :cname => "hello.com", :private_cdn => true, :cdn_subdomain => true}])
|
630
|
+
.to produce_url("http://a2.hello.com/image/upload/test")
|
622
631
|
.and empty_options
|
623
632
|
end
|
624
633
|
|
@@ -807,6 +816,12 @@ describe Cloudinary::Utils do
|
|
807
816
|
{ effect: "sepia" }]])
|
808
817
|
.to produce_url("#{upload_path}/if_w_lt_200,c_fill,h_120,w_80/if_w_gt_400,c_fit,h_150,w_150/e_sepia/sample")
|
809
818
|
end
|
819
|
+
it "should allow multiple tags condition" do
|
820
|
+
expect(["sample", transformation: [{ if: "!tag1:tag2:tag3!_in_tags", crop: "fill", height: 120, width: 80 },
|
821
|
+
{ if: "else", crop: "fit", width: 150, height: 150 },
|
822
|
+
{ effect: "sepia" }]])
|
823
|
+
.to produce_url("#{upload_path}/if_!tag1:tag2:tag3!_in_tags,c_fill,h_120,w_80/if_else,c_fit,h_150,w_150/e_sepia/sample")
|
824
|
+
end
|
810
825
|
|
811
826
|
describe "including spaces and operators" do
|
812
827
|
it "should translate operators" do
|
@@ -903,4 +918,32 @@ describe Cloudinary::Utils do
|
|
903
918
|
.or eq("symbol_key=string_value|string_key=symbol_value")
|
904
919
|
end
|
905
920
|
end
|
921
|
+
|
922
|
+
describe "customFunction" do
|
923
|
+
custom_function_wasm = {
|
924
|
+
:function_type => 'wasm',
|
925
|
+
:source => 'blur.wasm'
|
926
|
+
}
|
927
|
+
custom_function_wasm_str = 'wasm:blur.wasm'
|
928
|
+
|
929
|
+
custom_function_remote = {
|
930
|
+
:function_type => 'remote',
|
931
|
+
:source => 'https://df34ra4a.execute-api.us-west-2.amazonaws.com/default/cloudinaryFunction'
|
932
|
+
}
|
933
|
+
custom_function_remote_str = 'remote:aHR0cHM6Ly9kZjM0cmE0YS5leGVjdXRlLWFwaS51cy13ZXN0LTIuYW1hem9uYXdzLmNvbS9kZWZhdWx0L2Nsb3VkaW5hcnlGdW5jdGlvbg=='
|
934
|
+
|
935
|
+
it 'should accept a string value' do
|
936
|
+
actual = Cloudinary::Utils.generate_transformation_string :custom_function => custom_function_wasm_str
|
937
|
+
expect( actual).to eq("fn_#{custom_function_wasm_str}")
|
938
|
+
end
|
939
|
+
it 'should accept a hash of options' do
|
940
|
+
actual = Cloudinary::Utils.generate_transformation_string :custom_function => custom_function_wasm
|
941
|
+
expect( actual).to eq("fn_#{custom_function_wasm_str}")
|
942
|
+
end
|
943
|
+
it 'should base64 encoded URL for a remote function' do
|
944
|
+
actual = Cloudinary::Utils.generate_transformation_string :custom_function => custom_function_remote
|
945
|
+
expect( actual).to eq("fn_#{custom_function_remote_str}")
|
946
|
+
|
947
|
+
end
|
948
|
+
end
|
906
949
|
end
|
data/spec/video_tag_spec.rb
CHANGED
@@ -14,14 +14,16 @@ if ::Rails::VERSION::MAJOR < 4
|
|
14
14
|
end
|
15
15
|
end
|
16
16
|
describe CloudinaryHelper do
|
17
|
+
|
17
18
|
before :all do
|
18
19
|
# Test the helper in the context it runs in in production
|
19
20
|
ActionView::Base.send :include, CloudinaryHelper
|
20
21
|
|
21
22
|
end
|
22
23
|
before(:each) do
|
24
|
+
Cloudinary.reset_config
|
23
25
|
Cloudinary.config do |config|
|
24
|
-
config.cloud_name =
|
26
|
+
config.cloud_name = DUMMY_CLOUD
|
25
27
|
config.secure_distribution = nil
|
26
28
|
config.private_cdn = false
|
27
29
|
config.secure = false
|
@@ -35,11 +37,11 @@ describe CloudinaryHelper do
|
|
35
37
|
let(:helper) {
|
36
38
|
ActionView::Base.new
|
37
39
|
}
|
38
|
-
let(:root_path) { "http://res.cloudinary.com
|
40
|
+
let(:root_path) { "http://res.cloudinary.com/#{DUMMY_CLOUD}" }
|
39
41
|
let(:upload_path) { "#{root_path}/video/upload" }
|
40
42
|
|
41
43
|
describe 'cl_video_tag' do
|
42
|
-
let(:basic_options) { { :cloud_name =>
|
44
|
+
let(:basic_options) { { :cloud_name => DUMMY_CLOUD} }
|
43
45
|
let(:options) { basic_options }
|
44
46
|
let(:test_tag) { TestTag.new helper.cl_video_tag("movie", options) }
|
45
47
|
context "when options include video tag attributes" do
|
@@ -170,7 +172,7 @@ describe CloudinaryHelper do
|
|
170
172
|
let(:fallback) { "<span id=\"spanid\">Cannot display video</span>" }
|
171
173
|
let(:options) { basic_options.merge(:fallback_content => fallback) }
|
172
174
|
it "should include fallback content in the tag" do
|
173
|
-
expect(test_tag.children).to include(TestTag.new(fallback))
|
175
|
+
expect(test_tag.children.map(&:to_html)).to include(TestTag.new(fallback).element.to_html)
|
174
176
|
end
|
175
177
|
end
|
176
178
|
|
@@ -184,7 +186,7 @@ describe CloudinaryHelper do
|
|
184
186
|
TestTag.new(html)
|
185
187
|
end
|
186
188
|
it 'should treat the block return value as fallback content' do
|
187
|
-
expect(test_tag.children).to include("Cannot display video!")
|
189
|
+
expect(test_tag.children.map(&:to_html)).to include("Cannot display video!")
|
188
190
|
end
|
189
191
|
end
|
190
192
|
describe "dimensions" do
|
data/spec/video_url_spec.rb
CHANGED
@@ -6,9 +6,11 @@ require 'cloudinary/helper'
|
|
6
6
|
require 'action_view/test_case'
|
7
7
|
|
8
8
|
describe Cloudinary::Utils do
|
9
|
+
|
9
10
|
before(:each) do
|
11
|
+
Cloudinary.reset_config
|
10
12
|
Cloudinary.config do |config|
|
11
|
-
config.cloud_name =
|
13
|
+
config.cloud_name = DUMMY_CLOUD
|
12
14
|
config.secure_distribution = nil
|
13
15
|
config.private_cdn = false
|
14
16
|
config.secure = false
|
@@ -18,7 +20,7 @@ describe Cloudinary::Utils do
|
|
18
20
|
config.api_secret = "b"
|
19
21
|
end
|
20
22
|
end
|
21
|
-
let(:root_path) { "http://res.cloudinary.com
|
23
|
+
let(:root_path) { "http://res.cloudinary.com/#{DUMMY_CLOUD}" }
|
22
24
|
let(:upload_path) { "#{root_path}/video/upload" }
|
23
25
|
|
24
26
|
describe "cloudinary_url" do
|
@@ -0,0 +1,202 @@
|
|
1
|
+
#!/usr/bin/env bash
|
2
|
+
|
3
|
+
# Update version number and prepare for publishing the new version
|
4
|
+
|
5
|
+
set -e
|
6
|
+
|
7
|
+
# Empty to run the rest of the line and "echo" for a dry run
|
8
|
+
CMD_PREFIX=
|
9
|
+
|
10
|
+
# Add a quote if this is a dry run
|
11
|
+
QUOTE=
|
12
|
+
|
13
|
+
NEW_VERSION=
|
14
|
+
|
15
|
+
function echo_err
|
16
|
+
{
|
17
|
+
echo "$@" 1>&2;
|
18
|
+
}
|
19
|
+
|
20
|
+
function usage
|
21
|
+
{
|
22
|
+
echo "Usage: $0 [parameters]"
|
23
|
+
echo " -v | --version <version> set a new version"
|
24
|
+
echo " -c | --current show current version"
|
25
|
+
echo " -d | --dry-run print the commands without executing them"
|
26
|
+
echo " -h | --help print this information and exit"
|
27
|
+
echo
|
28
|
+
echo "For example: $0 -v 1.2.3"
|
29
|
+
}
|
30
|
+
|
31
|
+
function process_arguments
|
32
|
+
{
|
33
|
+
while [ "$1" != "" ]; do
|
34
|
+
case $1 in
|
35
|
+
-v | --version )
|
36
|
+
shift
|
37
|
+
NEW_VERSION=${1:-}
|
38
|
+
if ! [[ "${NEW_VERSION}" =~ [0-9]+\.[0-9]+\.[0-9]+(\-.+)? ]]; then
|
39
|
+
echo_err "You must supply a new version after -v or --version"
|
40
|
+
echo_err "For example:"
|
41
|
+
echo_err " 1.2.3"
|
42
|
+
echo_err " 1.2.3-rc1"
|
43
|
+
echo_err ""
|
44
|
+
usage; return 1
|
45
|
+
fi
|
46
|
+
;;
|
47
|
+
-c | --current )
|
48
|
+
echo `current_version`
|
49
|
+
exit
|
50
|
+
;;
|
51
|
+
-d | --dry-run )
|
52
|
+
CMD_PREFIX=echo
|
53
|
+
echo "Dry Run"
|
54
|
+
echo ""
|
55
|
+
;;
|
56
|
+
-h | --help )
|
57
|
+
usage; return 0
|
58
|
+
;;
|
59
|
+
* )
|
60
|
+
usage; return 1
|
61
|
+
esac
|
62
|
+
shift || true
|
63
|
+
done
|
64
|
+
}
|
65
|
+
|
66
|
+
# Intentionally make pushd silent
|
67
|
+
function pushd
|
68
|
+
{
|
69
|
+
command pushd "$@" > /dev/null
|
70
|
+
}
|
71
|
+
|
72
|
+
# Intentionally make popd silent
|
73
|
+
function popd
|
74
|
+
{
|
75
|
+
command popd "$@" > /dev/null
|
76
|
+
}
|
77
|
+
|
78
|
+
# Check if one version is less than or equal than other
|
79
|
+
# Example:
|
80
|
+
# ver_lte 1.2.3 1.2.3 && echo "yes" || echo "no" # yes
|
81
|
+
# ver_lte 1.2.3 1.2.4 && echo "yes" || echo "no" # yes
|
82
|
+
# ver_lte 1.2.4 1.2.3 && echo "yes" || echo "no" # no
|
83
|
+
function ver_lte
|
84
|
+
{
|
85
|
+
[ "$1" = "`echo -e "$1\n$2" | sort -V | head -n1`" ]
|
86
|
+
}
|
87
|
+
|
88
|
+
# Extract the last entry or entry for a given version
|
89
|
+
# The function is not currently used in this file.
|
90
|
+
# Examples:
|
91
|
+
# changelog_last_entry
|
92
|
+
# changelog_last_entry 1.10.0
|
93
|
+
#
|
94
|
+
function changelog_last_entry
|
95
|
+
{
|
96
|
+
sed -e "1,/^${1}/d" -e '/^=/d' -e '/^$/d' -e '/^[0-9]/,$d' CHANGELOG.md
|
97
|
+
}
|
98
|
+
|
99
|
+
function verify_dependencies
|
100
|
+
{
|
101
|
+
# Test if the gnu grep is installed
|
102
|
+
if ! grep --version | grep -q GNU
|
103
|
+
then
|
104
|
+
echo_err "GNU grep is required for this script"
|
105
|
+
echo_err "You can install it using the following command:"
|
106
|
+
echo_err ""
|
107
|
+
echo_err "brew install grep --with-default-names"
|
108
|
+
return 1
|
109
|
+
fi
|
110
|
+
|
111
|
+
if [[ -z "$(type -t git-changelog)" ]]
|
112
|
+
then
|
113
|
+
echo_err "git-extras packages is not installed."
|
114
|
+
echo_err "You can install it using the following command:"
|
115
|
+
echo_err ""
|
116
|
+
echo_err "brew install git-extras"
|
117
|
+
return 1
|
118
|
+
fi
|
119
|
+
}
|
120
|
+
|
121
|
+
# Replace old string only if it is present in the file, otherwise return 1
|
122
|
+
function safe_replace
|
123
|
+
{
|
124
|
+
local old=$1
|
125
|
+
local new=$2
|
126
|
+
local file=$3
|
127
|
+
|
128
|
+
grep -q "${old}" "${file}" || { echo_err "${old} was not found in ${file}"; return 1; }
|
129
|
+
|
130
|
+
${CMD_PREFIX} sed -E -i '.bak' "${QUOTE}s/${old}/${new}/${QUOTE}" "${file}"
|
131
|
+
}
|
132
|
+
|
133
|
+
function current_version
|
134
|
+
{
|
135
|
+
grep -oiP '(?<=VERSION = ")([0-9.]+)(?=")' lib/cloudinary/version.rb
|
136
|
+
}
|
137
|
+
|
138
|
+
function update_version
|
139
|
+
{
|
140
|
+
if [ -z "${NEW_VERSION}" ]; then
|
141
|
+
usage; return 1
|
142
|
+
fi
|
143
|
+
|
144
|
+
# Enter git root
|
145
|
+
pushd $(git rev-parse --show-toplevel)
|
146
|
+
local current_version=$(current_version)
|
147
|
+
|
148
|
+
if [ -z "${current_version}" ]; then
|
149
|
+
echo_err "Failed getting current version, please check directory structure and/or contact developer"
|
150
|
+
return 1
|
151
|
+
fi
|
152
|
+
|
153
|
+
# Use literal dot character in regular expression
|
154
|
+
local current_version_re=${current_version//./\\.}
|
155
|
+
|
156
|
+
echo "# Current version is: ${current_version}"
|
157
|
+
echo "# New version is: ${NEW_VERSION}"
|
158
|
+
|
159
|
+
ver_lte "${NEW_VERSION}" "${current_version}" && { echo_err "New version is not greater than current version"; return 1; }
|
160
|
+
|
161
|
+
# Add a quote if this is a dry run
|
162
|
+
QUOTE=${CMD_PREFIX:+"'"}
|
163
|
+
|
164
|
+
safe_replace "VERSION = \"${current_version_re}\""\
|
165
|
+
"VERSION = \"${NEW_VERSION}\""\
|
166
|
+
lib/cloudinary/version.rb\
|
167
|
+
|| return 1
|
168
|
+
|
169
|
+
${CMD_PREFIX} git changelog -t ${NEW_VERSION} || true
|
170
|
+
|
171
|
+
echo ""
|
172
|
+
echo "# After editing CHANGELOG.md, optionally review changes and issue these commands:"
|
173
|
+
echo git add lib/cloudinary/version.rb CHANGELOG.md
|
174
|
+
echo git commit -m \"Version ${NEW_VERSION}\"
|
175
|
+
echo sed -e "'1,/^${NEW_VERSION//./\\.}/d'" \
|
176
|
+
-e "'/^=/d'" \
|
177
|
+
-e "'/^$/d'" \
|
178
|
+
-e "'/^[0-9]/,\$d'" \
|
179
|
+
CHANGELOG.md \
|
180
|
+
\| git tag -a "'${NEW_VERSION}'" --file=-
|
181
|
+
|
182
|
+
# Don't run those commands on dry run
|
183
|
+
[ -n "${CMD_PREFIX}" ] && { popd; return 0; }
|
184
|
+
|
185
|
+
echo ""
|
186
|
+
read -p "Run the above commands automatically? (y/N): " confirm && [[ ${confirm} == [yY] || ${confirm} == [yY][eE][sS] ]] || { popd; return 0; }
|
187
|
+
|
188
|
+
git add lib/cloudinary/version.rb CHANGELOG.md
|
189
|
+
git commit -m "Version ${NEW_VERSION}"
|
190
|
+
sed -e "1,/^${NEW_VERSION//./\\.}/d" \
|
191
|
+
-e "/^=/d" \
|
192
|
+
-e "/^$/d" \
|
193
|
+
-e "/^[0-9]/,\$d" \
|
194
|
+
CHANGELOG.md \
|
195
|
+
| git tag -a "${NEW_VERSION}" --file=-
|
196
|
+
|
197
|
+
popd
|
198
|
+
}
|
199
|
+
|
200
|
+
verify_dependencies
|
201
|
+
process_arguments $*
|
202
|
+
update_version
|
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.
|
4
|
+
version: 1.10.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nadav Soferman
|
@@ -10,120 +10,162 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2018-
|
13
|
+
date: 2018-11-08 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: aws_cf_signer
|
17
17
|
requirement: !ruby/object:Gem::Requirement
|
18
18
|
requirements:
|
19
|
-
- -
|
19
|
+
- - ! '>='
|
20
20
|
- !ruby/object:Gem::Version
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
25
|
requirements:
|
26
|
-
- -
|
26
|
+
- - ! '>='
|
27
27
|
- !ruby/object:Gem::Version
|
28
28
|
version: '0'
|
29
29
|
- !ruby/object:Gem::Dependency
|
30
30
|
name: rspec
|
31
31
|
requirement: !ruby/object:Gem::Requirement
|
32
32
|
requirements:
|
33
|
-
- -
|
33
|
+
- - ! '>='
|
34
34
|
- !ruby/object:Gem::Version
|
35
35
|
version: '3.5'
|
36
36
|
type: :development
|
37
37
|
prerelease: false
|
38
38
|
version_requirements: !ruby/object:Gem::Requirement
|
39
39
|
requirements:
|
40
|
-
- -
|
40
|
+
- - ! '>='
|
41
41
|
- !ruby/object:Gem::Version
|
42
42
|
version: '3.5'
|
43
43
|
- !ruby/object:Gem::Dependency
|
44
44
|
name: rspec-rails
|
45
45
|
requirement: !ruby/object:Gem::Requirement
|
46
46
|
requirements:
|
47
|
-
- -
|
47
|
+
- - ! '>='
|
48
48
|
- !ruby/object:Gem::Version
|
49
49
|
version: '0'
|
50
50
|
type: :development
|
51
51
|
prerelease: false
|
52
52
|
version_requirements: !ruby/object:Gem::Requirement
|
53
53
|
requirements:
|
54
|
-
- -
|
54
|
+
- - ! '>='
|
55
55
|
- !ruby/object:Gem::Version
|
56
56
|
version: '0'
|
57
57
|
- !ruby/object:Gem::Dependency
|
58
58
|
name: rake
|
59
59
|
requirement: !ruby/object:Gem::Requirement
|
60
60
|
requirements:
|
61
|
-
- -
|
61
|
+
- - ! '>='
|
62
62
|
- !ruby/object:Gem::Version
|
63
63
|
version: '0'
|
64
64
|
type: :development
|
65
65
|
prerelease: false
|
66
66
|
version_requirements: !ruby/object:Gem::Requirement
|
67
67
|
requirements:
|
68
|
-
- -
|
68
|
+
- - ! '>='
|
69
69
|
- !ruby/object:Gem::Version
|
70
70
|
version: '0'
|
71
71
|
- !ruby/object:Gem::Dependency
|
72
72
|
name: rest-client
|
73
73
|
requirement: !ruby/object:Gem::Requirement
|
74
74
|
requirements:
|
75
|
-
- -
|
75
|
+
- - <
|
76
76
|
- !ruby/object:Gem::Version
|
77
|
-
version: '0'
|
77
|
+
version: '2.0'
|
78
78
|
type: :runtime
|
79
79
|
prerelease: false
|
80
80
|
version_requirements: !ruby/object:Gem::Requirement
|
81
81
|
requirements:
|
82
|
-
- -
|
82
|
+
- - <
|
83
83
|
- !ruby/object:Gem::Version
|
84
|
-
version: '0'
|
84
|
+
version: '2.0'
|
85
|
+
- !ruby/object:Gem::Dependency
|
86
|
+
name: json
|
87
|
+
requirement: !ruby/object:Gem::Requirement
|
88
|
+
requirements:
|
89
|
+
- - ~>
|
90
|
+
- !ruby/object:Gem::Version
|
91
|
+
version: '1.8'
|
92
|
+
type: :runtime
|
93
|
+
prerelease: false
|
94
|
+
version_requirements: !ruby/object:Gem::Requirement
|
95
|
+
requirements:
|
96
|
+
- - ~>
|
97
|
+
- !ruby/object:Gem::Version
|
98
|
+
version: '1.8'
|
85
99
|
- !ruby/object:Gem::Dependency
|
86
100
|
name: actionpack
|
87
101
|
requirement: !ruby/object:Gem::Requirement
|
88
102
|
requirements:
|
89
|
-
- -
|
103
|
+
- - <
|
90
104
|
- !ruby/object:Gem::Version
|
91
|
-
version: '0'
|
105
|
+
version: '5.0'
|
92
106
|
type: :development
|
93
107
|
prerelease: false
|
94
108
|
version_requirements: !ruby/object:Gem::Requirement
|
95
109
|
requirements:
|
96
|
-
- -
|
110
|
+
- - <
|
97
111
|
- !ruby/object:Gem::Version
|
98
|
-
version: '0'
|
112
|
+
version: '5.0'
|
99
113
|
- !ruby/object:Gem::Dependency
|
100
114
|
name: simplecov
|
101
115
|
requirement: !ruby/object:Gem::Requirement
|
102
116
|
requirements:
|
103
|
-
- -
|
117
|
+
- - ! '>='
|
104
118
|
- !ruby/object:Gem::Version
|
105
119
|
version: '0'
|
106
120
|
type: :development
|
107
121
|
prerelease: false
|
108
122
|
version_requirements: !ruby/object:Gem::Requirement
|
109
123
|
requirements:
|
110
|
-
- -
|
124
|
+
- - ! '>='
|
111
125
|
- !ruby/object:Gem::Version
|
112
126
|
version: '0'
|
127
|
+
- !ruby/object:Gem::Dependency
|
128
|
+
name: nokogiri
|
129
|
+
requirement: !ruby/object:Gem::Requirement
|
130
|
+
requirements:
|
131
|
+
- - <
|
132
|
+
- !ruby/object:Gem::Version
|
133
|
+
version: 1.7.0
|
134
|
+
type: :development
|
135
|
+
prerelease: false
|
136
|
+
version_requirements: !ruby/object:Gem::Requirement
|
137
|
+
requirements:
|
138
|
+
- - <
|
139
|
+
- !ruby/object:Gem::Version
|
140
|
+
version: 1.7.0
|
113
141
|
- !ruby/object:Gem::Dependency
|
114
142
|
name: rubyzip
|
115
143
|
requirement: !ruby/object:Gem::Requirement
|
116
144
|
requirements:
|
117
|
-
- -
|
145
|
+
- - <
|
118
146
|
- !ruby/object:Gem::Version
|
119
|
-
version:
|
147
|
+
version: 1.2.1
|
120
148
|
type: :development
|
121
149
|
prerelease: false
|
122
150
|
version_requirements: !ruby/object:Gem::Requirement
|
123
151
|
requirements:
|
124
|
-
- -
|
152
|
+
- - <
|
125
153
|
- !ruby/object:Gem::Version
|
126
|
-
version:
|
154
|
+
version: 1.2.1
|
155
|
+
- !ruby/object:Gem::Dependency
|
156
|
+
name: rack
|
157
|
+
requirement: !ruby/object:Gem::Requirement
|
158
|
+
requirements:
|
159
|
+
- - <
|
160
|
+
- !ruby/object:Gem::Version
|
161
|
+
version: 1.6.5
|
162
|
+
type: :development
|
163
|
+
prerelease: false
|
164
|
+
version_requirements: !ruby/object:Gem::Requirement
|
165
|
+
requirements:
|
166
|
+
- - <
|
167
|
+
- !ruby/object:Gem::Version
|
168
|
+
version: 1.6.5
|
127
169
|
description: Client library for easily using the Cloudinary service
|
128
170
|
email:
|
129
171
|
- nadav.soferman@cloudinary.com
|
@@ -133,9 +175,9 @@ executables: []
|
|
133
175
|
extensions: []
|
134
176
|
extra_rdoc_files: []
|
135
177
|
files:
|
136
|
-
-
|
137
|
-
-
|
138
|
-
-
|
178
|
+
- .gitignore
|
179
|
+
- .rspec
|
180
|
+
- .travis.yml
|
139
181
|
- CHANGELOG.md
|
140
182
|
- CONTRIBUTING.md
|
141
183
|
- Gemfile
|
@@ -146,6 +188,11 @@ files:
|
|
146
188
|
- lib/cloudinary/api.rb
|
147
189
|
- lib/cloudinary/auth_token.rb
|
148
190
|
- lib/cloudinary/blob.rb
|
191
|
+
- lib/cloudinary/cache.rb
|
192
|
+
- lib/cloudinary/cache/breakpoints_cache.rb
|
193
|
+
- lib/cloudinary/cache/key_value_cache_adapter.rb
|
194
|
+
- lib/cloudinary/cache/rails_cache_adapter.rb
|
195
|
+
- lib/cloudinary/cache/storage/rails_cache_storage.rb
|
149
196
|
- lib/cloudinary/carrier_wave.rb
|
150
197
|
- lib/cloudinary/carrier_wave/error.rb
|
151
198
|
- lib/cloudinary/carrier_wave/preloaded.rb
|
@@ -162,6 +209,7 @@ files:
|
|
162
209
|
- lib/cloudinary/ostruct2.rb
|
163
210
|
- lib/cloudinary/preloaded_file.rb
|
164
211
|
- lib/cloudinary/railtie.rb
|
212
|
+
- lib/cloudinary/responsive.rb
|
165
213
|
- lib/cloudinary/search.rb
|
166
214
|
- lib/cloudinary/static.rb
|
167
215
|
- lib/cloudinary/uploader.rb
|
@@ -173,6 +221,7 @@ files:
|
|
173
221
|
- spec/api_spec.rb
|
174
222
|
- spec/archive_spec.rb
|
175
223
|
- spec/auth_token_spec.rb
|
224
|
+
- spec/cache_spec.rb
|
176
225
|
- spec/cloudinary_helper_spec.rb
|
177
226
|
- spec/cloudinary_spec.rb
|
178
227
|
- spec/data/sync_static/app/assets/javascripts/1.coffee
|
@@ -180,6 +229,7 @@ files:
|
|
180
229
|
- spec/data/sync_static/app/assets/stylesheets/1.css
|
181
230
|
- spec/docx.docx
|
182
231
|
- spec/favicon.ico
|
232
|
+
- spec/image_spec.rb
|
183
233
|
- spec/logo.png
|
184
234
|
- spec/rake_spec.rb
|
185
235
|
- spec/sample_asset_file.tsv
|
@@ -194,6 +244,7 @@ files:
|
|
194
244
|
- spec/utils_spec.rb
|
195
245
|
- spec/video_tag_spec.rb
|
196
246
|
- spec/video_url_spec.rb
|
247
|
+
- tools/update_version
|
197
248
|
- vendor/assets/html/cloudinary_cors.html
|
198
249
|
- vendor/assets/javascripts/cloudinary/canvas-to-blob.min.js
|
199
250
|
- vendor/assets/javascripts/cloudinary/index.js
|
@@ -216,17 +267,17 @@ require_paths:
|
|
216
267
|
- lib
|
217
268
|
required_ruby_version: !ruby/object:Gem::Requirement
|
218
269
|
requirements:
|
219
|
-
- -
|
270
|
+
- - ! '>='
|
220
271
|
- !ruby/object:Gem::Version
|
221
272
|
version: '0'
|
222
273
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
223
274
|
requirements:
|
224
|
-
- -
|
275
|
+
- - ! '>='
|
225
276
|
- !ruby/object:Gem::Version
|
226
277
|
version: '0'
|
227
278
|
requirements: []
|
228
279
|
rubyforge_project: cloudinary
|
229
|
-
rubygems_version: 2.
|
280
|
+
rubygems_version: 2.7.7
|
230
281
|
signing_key:
|
231
282
|
specification_version: 4
|
232
283
|
summary: Client library for easily using the Cloudinary service
|
@@ -235,6 +286,7 @@ test_files:
|
|
235
286
|
- spec/api_spec.rb
|
236
287
|
- spec/archive_spec.rb
|
237
288
|
- spec/auth_token_spec.rb
|
289
|
+
- spec/cache_spec.rb
|
238
290
|
- spec/cloudinary_helper_spec.rb
|
239
291
|
- spec/cloudinary_spec.rb
|
240
292
|
- spec/data/sync_static/app/assets/javascripts/1.coffee
|
@@ -242,6 +294,7 @@ test_files:
|
|
242
294
|
- spec/data/sync_static/app/assets/stylesheets/1.css
|
243
295
|
- spec/docx.docx
|
244
296
|
- spec/favicon.ico
|
297
|
+
- spec/image_spec.rb
|
245
298
|
- spec/logo.png
|
246
299
|
- spec/rake_spec.rb
|
247
300
|
- spec/sample_asset_file.tsv
|