cloudinary 1.0.67 → 1.0.68

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/CHANGELOG CHANGED
@@ -1,3 +1,8 @@
1
+ = Version 1.0.68 - 2014-02-16
2
+ * Support for uploading large raw files.
3
+ * Correct support for image_tag and image_path override.
4
+ * Add direction support to Admin API listings.
5
+
1
6
  = Version 1.0.67 - 2014-01-09
2
7
  * Support specifying face coordinates in upload API.
3
8
  * Support specifying context (currently alt and caption) in upload API and returning context in API.
@@ -36,20 +36,20 @@ class Cloudinary::Api
36
36
  type = options[:type]
37
37
  uri = "resources/#{resource_type}"
38
38
  uri += "/#{type}" if !type.blank?
39
- call_api(:get, uri, only(options, :next_cursor, :max_results, :prefix, :tags, :context), options)
39
+ call_api(:get, uri, only(options, :next_cursor, :max_results, :prefix, :tags, :context, :direction), options)
40
40
  end
41
41
 
42
42
  def self.resources_by_tag(tag, options={})
43
43
  resource_type = options[:resource_type] || "image"
44
44
  uri = "resources/#{resource_type}/tags/#{tag}"
45
- call_api(:get, uri, only(options, :next_cursor, :max_results, :tags, :context), options)
45
+ call_api(:get, uri, only(options, :next_cursor, :max_results, :tags, :context, :direction), options)
46
46
  end
47
47
 
48
48
  def self.resources_by_ids(public_ids, options={})
49
49
  resource_type = options[:resource_type] || "image"
50
50
  type = options[:type] || "upload"
51
51
  uri = "resources/#{resource_type}/#{type}"
52
- call_api(:get, uri, only(options, :tags, :context).merge(public_ids: public_ids), options)
52
+ call_api(:get, uri, only(options, :tags, :context).merge(:public_ids => public_ids), options)
53
53
  end
54
54
 
55
55
  def self.resource(public_id, options={})
@@ -1,2 +1,2 @@
1
- class Cloudinary::Engine < Rails::Engine
1
+ class Cloudinary::Engine < Rails::Engine
2
2
  end
@@ -1,9 +1,5 @@
1
1
  require 'digest/md5'
2
2
  module CloudinaryHelper
3
- include ActionView::Helpers::AssetTagHelper
4
- alias :original_image_tag :image_tag
5
- alias :original_image_path :image_path
6
-
7
3
  # Stand-in for Rails image_tag helper that accepts various options for transformations.
8
4
  #
9
5
  # source:: the public ID, possibly with a file type extension. If there is no extension, the
@@ -34,32 +30,24 @@ module CloudinaryHelper
34
30
  options[:size] = options.delete(:html_size) if options.include?(:html_size)
35
31
  options[:border] = options.delete(:html_border) if options.include?(:html_border)
36
32
 
37
- original_image_tag(source, options)
33
+ image_tag_without_cloudinary(source, options)
38
34
  end
39
35
 
40
36
  # Works similarly to cl_image_tag, however just generates the URL of the image
41
37
  def cl_image_path(source, options = {})
42
38
  options = options.clone
43
39
  url = cloudinary_url_internal(source, options)
44
- original_image_path(url)
40
+ image_path_without_cloudinary(url)
45
41
  end
46
42
 
47
- def image_tag(*args)
48
- if Cloudinary.config.enhance_image_tag
49
- source, options = args
50
- cl_image_tag(source, {:type=>:asset}.merge(options || {}))
51
- else
52
- original_image_tag(*args)
53
- end
43
+ def image_tag_with_cloudinary(*args)
44
+ source, options = args
45
+ cl_image_tag(source, {:type=>:asset}.merge(options || {}))
54
46
  end
55
47
 
56
- def image_path(*args)
57
- if Cloudinary.config.enhance_image_tag
58
- source, options = args
59
- cl_image_path(source, {:type=>:asset}.merge(options || {}))
60
- else
61
- original_image_path(*args)
62
- end
48
+ def image_path_with_cloudinary(*args)
49
+ source, options = args
50
+ cl_image_path(source, {:type=>:asset}.merge(options || {}))
63
51
  end
64
52
 
65
53
  def fetch_image_tag(profile, options = {})
@@ -206,6 +194,15 @@ module CloudinaryHelper
206
194
 
207
195
  def self.included(base)
208
196
  ActionView::Helpers::FormBuilder.send(:include, Cloudinary::FormBuilder)
197
+ base.class_eval do
198
+ if defined?(Rails) && !Rails.version.start_with?("2") && Cloudinary.config.enhance_image_tag
199
+ alias_method_chain :image_tag, :cloudinary
200
+ alias_method_chain :image_path, :cloudinary
201
+ else
202
+ alias_method :image_tag_without_cloudinary, :image_tag
203
+ alias_method :image_path_without_cloudinary, :image_path
204
+ end
205
+ end
209
206
  end
210
207
 
211
208
  private
@@ -259,7 +256,10 @@ if defined? ActionView::Helpers::AssetUrlHelper
259
256
  end
260
257
  end
261
258
 
262
- ActionView::Base.send :include, CloudinaryHelper
259
+ if defined?(Rails) && Rails.version.start_with?("2")
260
+ ActionView::Base.send :include, ActionView::Helpers::AssetTagHelper
261
+ ActionView::Base.send :include, CloudinaryHelper
262
+ end
263
263
 
264
264
  begin
265
265
  require 'sass-rails'
@@ -2,4 +2,7 @@ class Cloudinary::Railtie < Rails::Railtie
2
2
  rake_tasks do
3
3
  Dir[File.join(File.dirname(__FILE__),'../tasks/*.rake')].each { |f| load f }
4
4
  end
5
+ config.after_initialize do |app|
6
+ ActionView::Base.send :include, CloudinaryHelper
7
+ end
5
8
  end
@@ -59,6 +59,44 @@ class Cloudinary::Uploader
59
59
  end
60
60
  end
61
61
 
62
+ # Upload large raw files. Note that public_id should include an extension for best results.
63
+ def self.upload_large(file, public_id, options={})
64
+ if file.is_a?(Pathname) || !file.respond_to?(:read)
65
+ file = File.open(file, "rb")
66
+ end
67
+ upload = upload_id = nil
68
+ index = 1
69
+ while !file.eof?
70
+ buffer = file.read(20_000_000)
71
+ upload = upload_large_part(Cloudinary::Blob.new(buffer), public_id, options.merge(:upload_id=>upload_id, :part_number=>index, :final=>file.eof?))
72
+ upload_id = upload["upload_id"]
73
+ index += 1
74
+ end
75
+ upload
76
+ end
77
+
78
+
79
+ # Upload large raw files. Note that public_id should include an extension for best results.
80
+ def self.upload_large_part(file, public_id, options={})
81
+ call_api("upload_large", options.merge(:resource_type=>:raw)) do
82
+ params = {
83
+ :timestamp=>Time.now.to_i,
84
+ :type=>options[:type],
85
+ :public_id=> public_id,
86
+ :backup=>options[:backup],
87
+ :final=>options[:final],
88
+ :part_number=>options[:part_number],
89
+ :upload_id=>options[:upload_id]
90
+ }
91
+ if file.is_a?(Pathname) || !file.respond_to?(:read)
92
+ params[:file] = File.open(file, "rb")
93
+ else
94
+ params[:file] = file
95
+ end
96
+ [params, [:file]]
97
+ end
98
+ end
99
+
62
100
  def self.destroy(public_id, options={})
63
101
  call_api("destroy", options) do
64
102
  {
@@ -1,4 +1,4 @@
1
1
  # Copyright Cloudinary
2
2
  module Cloudinary
3
- VERSION = "1.0.67"
3
+ VERSION = "1.0.68"
4
4
  end
@@ -64,6 +64,19 @@ describe Cloudinary::Api do
64
64
  resources.map{|resource| resource["tags"]}.should include(["api_test_tag"])
65
65
  resources.map{|resource| resource["context"]}.should include({"custom" => {"key" => "value"}})
66
66
  end
67
+
68
+ it "should allow listing resources in both directions" do
69
+ asc_resources = @api.resources(:type=>"upload", :prefix=>"api_test", :direction => "asc")["resources"]
70
+ desc_resources = @api.resources(:type=>"upload", :prefix=>"api_test", :direction => "desc")["resources"]
71
+ # NOTE: this assumes the full list fits in a page which is the case unless resources with 'api_test' prefix were
72
+ # uploaded to the account against which this test runs
73
+ asc_resources.reverse.should == desc_resources
74
+ asc_resources_alt = @api.resources(:type=>"upload", :prefix=>"api_test", :direction => 1)["resources"]
75
+ desc_resources_alt = @api.resources(:type=>"upload", :prefix=>"api_test", :direction => -1)["resources"]
76
+ asc_resources_alt.reverse.should == desc_resources_alt
77
+ asc_resources.should == asc_resources_alt
78
+ lambda{@api.resources(:type=>"upload", :prefix=>"api_test", :direction => "anythingelse")["resources"]}.should raise_error(Cloudinary::Api::BadRequest)
79
+ end
67
80
 
68
81
  it "should allow get resource metadata" do
69
82
  resource = @api.resource("api_test")
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.67
4
+ version: 1.0.68
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: 2014-01-09 00:00:00.000000000 Z
14
+ date: 2014-02-16 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: rest-client