cloudinary 1.0.5 → 1.0.6

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.
@@ -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