cloudinary 1.0.5 → 1.0.6
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/cloudinary.rb +2 -1
- data/lib/cloudinary/controller.rb +13 -0
- data/lib/cloudinary/helper.rb +29 -2
- data/lib/cloudinary/uploader.rb +4 -4
- data/lib/cloudinary/utils.rb +7 -0
- data/lib/cloudinary/version.rb +1 -1
- metadata +3 -3
- data/lib/cloudinary/helpers.rb +0 -7
data/lib/cloudinary.rb
CHANGED
@@ -10,7 +10,8 @@ require 'active_support'
|
|
10
10
|
require "cloudinary/missing"
|
11
11
|
require "cloudinary/carrier_wave" if defined?(::CarrierWave)
|
12
12
|
require "cloudinary/helper" if defined?(::ActionView::Base)
|
13
|
-
require "cloudinary/
|
13
|
+
require "cloudinary/controller" if defined?(::ActionController::Base)
|
14
|
+
require "cloudinary/railtie" if defined?(Rails) && defined?(Rails::Railtie)
|
14
15
|
|
15
16
|
module Cloudinary
|
16
17
|
@@config = nil
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module CloudinaryController
|
2
|
+
protected
|
3
|
+
|
4
|
+
def valid_cloudinary_response?
|
5
|
+
received_signature = request.query_parameters[:signature]
|
6
|
+
calculated_signature = Cloudinary::Utils.api_sign_request(
|
7
|
+
request.query_parameters.select{|key, value| [:public_id, :version].include?(key.to_sym)},
|
8
|
+
Cloudinary.config.api_secret)
|
9
|
+
return received_signature == calculated_signature
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
ActionController::Base.send :include, CloudinaryController
|
data/lib/cloudinary/helper.rb
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
# Copyright Cloudinary
|
2
|
-
|
3
1
|
module CloudinaryHelper
|
4
2
|
include ActionView::Helpers::AssetTagHelper
|
5
3
|
alias :original_image_tag :image_tag
|
@@ -77,6 +75,35 @@ module CloudinaryHelper
|
|
77
75
|
stylesheet_link_tag(cl_sprite_url(source, options))
|
78
76
|
end
|
79
77
|
|
78
|
+
# cl_form_tag was originally contributed by Milovan Zogovic
|
79
|
+
def cl_form_tag(callback_url, options={}, &block)
|
80
|
+
form_options = options.delete(:form) || {}
|
81
|
+
form_options[:method] = :post
|
82
|
+
form_options[:multipart] = true
|
83
|
+
|
84
|
+
options[:timestamp] = Time.now.to_i
|
85
|
+
options[:callback] = callback_url
|
86
|
+
options[:transformation] = Cloudinary::Utils.generate_transformation_string(options[:transformation]) if options[:transformation]
|
87
|
+
options[:tags] = Cloudinary::Utils.build_array(options[:tags]).join(",") if options[:tags]
|
88
|
+
options[:signature] = Cloudinary::Utils.api_sign_request(options, Cloudinary.config.api_secret)
|
89
|
+
options[:api_key] = Cloudinary.config.api_key
|
90
|
+
|
91
|
+
api_url = Cloudinary::Utils.cloudinary_api_url("upload",
|
92
|
+
{:resource_type => options.delete(:resource_type), :upload_prefix => options.delete(:upload_prefix)})
|
93
|
+
|
94
|
+
form_tag(api_url, form_options) do
|
95
|
+
content = []
|
96
|
+
|
97
|
+
options.each do |name, value|
|
98
|
+
content << hidden_field_tag(name, value)
|
99
|
+
end
|
100
|
+
|
101
|
+
content << capture(&block)
|
102
|
+
|
103
|
+
content.join("\n").html_safe
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
80
107
|
def cloudinary_url(source, options = {})
|
81
108
|
options[:secure] = request.ssl? if !options.include?(:secure) && defined?(request) && request && request.respond_to?(:ssl?)
|
82
109
|
Cloudinary::Utils.cloudinary_url(source, options)
|
data/lib/cloudinary/uploader.rb
CHANGED
@@ -99,12 +99,12 @@ class Cloudinary::Uploader
|
|
99
99
|
|
100
100
|
params[:signature] = Cloudinary::Utils.api_sign_request(params.reject{|k,v| non_signable.include?(k)}, api_secret)
|
101
101
|
params[:api_key] = api_key
|
102
|
-
cloudinary = options.delete(:upload_prefix) || Cloudinary.config.upload_prefix || "https://api.cloudinary.com"
|
103
102
|
|
104
|
-
resource_type = options.delete(:resource_type) || "image"
|
105
103
|
result = nil
|
106
|
-
|
107
|
-
|
104
|
+
|
105
|
+
api_url = Cloudinary::Utils.cloudinary_api_url(action, {:resource_type => options.delete(:resource_type), :upload_prefix => options.delete(:upload_prefix)})
|
106
|
+
|
107
|
+
RestClient::Request.execute(:method => :post, :url => api_url, :payload => params.reject{|k, v| v.blank?}, :timeout=>60) do
|
108
108
|
|response, request, tmpresult|
|
109
109
|
raise "Server returned unexpected status code - #{response.code} - #{response.body}" if ![200,400,500].include?(response.code)
|
110
110
|
begin
|
data/lib/cloudinary/utils.rb
CHANGED
@@ -99,6 +99,13 @@ class Cloudinary::Utils
|
|
99
99
|
type, transformation, version ? "v#{version}" : nil,
|
100
100
|
source].reject(&:blank?).join("/").gsub(%r(([^:])//), '\1/')
|
101
101
|
end
|
102
|
+
|
103
|
+
def self.cloudinary_api_url(action = 'upload', options = {})
|
104
|
+
cloudinary = options[:upload_prefix] || Cloudinary.config.upload_prefix || "https://api.cloudinary.com"
|
105
|
+
cloud_name = Cloudinary.config.cloud_name || raise("Must supply cloud_name")
|
106
|
+
resource_type = options[:resource_type] || "image"
|
107
|
+
return [cloudinary, "v1_1", cloud_name, resource_type, action].join("/")
|
108
|
+
end
|
102
109
|
|
103
110
|
def self.asset_file_name(path)
|
104
111
|
data = Rails.root.join(path).read(:mode=>"rb")
|
data/lib/cloudinary/version.rb
CHANGED
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: cloudinary
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 1.0.
|
5
|
+
version: 1.0.6
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Nadav Soferman
|
@@ -12,7 +12,7 @@ autorequire:
|
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
14
|
|
15
|
-
date: 2012-04-
|
15
|
+
date: 2012-04-11 00:00:00 +03:00
|
16
16
|
default_executable:
|
17
17
|
dependencies:
|
18
18
|
- !ruby/object:Gem::Dependency
|
@@ -46,9 +46,9 @@ files:
|
|
46
46
|
- lib/cloudinary.rb
|
47
47
|
- lib/cloudinary/blob.rb
|
48
48
|
- lib/cloudinary/carrier_wave.rb
|
49
|
+
- lib/cloudinary/controller.rb
|
49
50
|
- lib/cloudinary/downloader.rb
|
50
51
|
- lib/cloudinary/helper.rb
|
51
|
-
- lib/cloudinary/helpers.rb
|
52
52
|
- lib/cloudinary/migrator.rb
|
53
53
|
- lib/cloudinary/missing.rb
|
54
54
|
- lib/cloudinary/railtie.rb
|