cloudinary 1.0.5 → 1.0.6

Sign up to get free protection for your applications and to get access to all the features.
@@ -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/railtie" if defined?(Rails)
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
@@ -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)
@@ -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
- cloud_name = Cloudinary.config.cloud_name || raise("Must supply cloud_name")
107
- RestClient::Request.execute(:method => :post, :url => "#{cloudinary}/v1_1/#{cloud_name}/#{resource_type}/#{action}", :payload => params.reject{|k, v| v.blank?}, :timeout=>60) do
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
@@ -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")
@@ -1,4 +1,4 @@
1
1
  # Copyright Cloudinary
2
2
  module Cloudinary
3
- VERSION = "1.0.5"
3
+ VERSION = "1.0.6"
4
4
  end
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
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-10 00:00:00 +03:00
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
@@ -1,7 +0,0 @@
1
- # Copyright Cloudinary
2
-
3
- module CloudinaryHelper
4
-
5
- end
6
-
7
- ActionView::Base.send :include, CloudinaryHelper