cloudinary 1.0.3 → 1.0.4

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.
@@ -1,6 +1,7 @@
1
1
  require 'find'
2
2
  class Cloudinary::Static
3
- IGNORE_FILES = [".svn", "CVS", "RCS", ".git", ".hg", /^.htaccess/]
3
+ IGNORE_FILES = [".svn", "CVS", "RCS", ".git", ".hg"]
4
+ SUPPORTED_IMAGES = [/\.gif$/i, /\.jpe?g$/i, /\.png$/i, /\.bmp$/i, /\.ico$/i]
4
5
  STATIC_IMAGE_DIRS = ["app/assets/images", "public/images"]
5
6
  METADATA_FILE = ".cloudinary.static"
6
7
  METADATA_TRASH_FILE = ".cloudinary.static.trash"
@@ -14,11 +15,13 @@ class Cloudinary::Static
14
15
  dir.find do
15
16
  |path|
16
17
  file = path.basename.to_s
17
- if IGNORE_FILES.any?{|pattern| pattern.is_a?(String) ? pattern == file : file.match(pattern)}
18
+ if ignore_files.any?{|pattern| pattern.is_a?(String) ? pattern == file : file.match(pattern)}
18
19
  Find.prune
19
20
  next
20
21
  elsif path.directory?
21
22
  next
23
+ elsif SUPPORTED_IMAGES.none?{|pattern| pattern.is_a?(String) ? pattern == file : file.match(pattern)}
24
+ next
22
25
  else
23
26
  relative_path = path.relative_path_from(Rails.root)
24
27
  public_path = path.relative_path_from(dir.dirname)
@@ -65,6 +68,7 @@ class Cloudinary::Static
65
68
  found_paths = Set.new
66
69
  found_public_ids = Set.new
67
70
  metadata_lines = []
71
+ counts = { :not_changed => 0, :uploaded => 0, :deleted => 0, :not_found => 0}
68
72
  self.discover do
69
73
  |path, public_path|
70
74
  next if found_paths.include?(path)
@@ -77,8 +81,12 @@ class Cloudinary::Static
77
81
  found_public_ids << public_id
78
82
  current_metadata = metadata.delete(public_path.to_s)
79
83
  if current_metadata && current_metadata["public_id"] == public_id # Signature match
84
+ counts[:not_changed] += 1
85
+ $stderr.print "#{public_path} - #{public_id} - Not changed\n"
80
86
  result = current_metadata
81
87
  else
88
+ counts[:uploaded] += 1
89
+ $stderr.print "#{public_path} - #{public_id} - Uploading\n"
82
90
  result = Cloudinary::Uploader.upload(Cloudinary::Blob.new(data, :original_filename=>path.to_s),
83
91
  options.merge(:format=>format, :public_id=>public_id, :type=>:asset)
84
92
  )
@@ -86,12 +94,18 @@ class Cloudinary::Static
86
94
  metadata_lines << [public_path, public_id, Time.now.to_i, result["version"], result["width"], result["height"]].join("\t")+"\n"
87
95
  end
88
96
  File.open(self.metadata_file_path, "w"){|f| f.print(metadata_lines.join)}
97
+ metadata.to_a.each do |path, info|
98
+ counts[:not_found] += 1
99
+ $stderr.print "#{path} - #{info["public_id"]} - Not found\n"
100
+ end
89
101
  # Files no longer needed
90
102
  trash = metadata.to_a + self.metadata(metadata_trash_file_path, false).reject{|public_path, info| found_public_ids.include?(info["public_id"])}
91
103
 
92
104
  if delete_missing
93
105
  trash.each do
94
106
  |path, info|
107
+ counts[:deleted] += 1
108
+ $stderr.print "#{path} - #{info["public_id"]} - Deleting\n"
95
109
  Cloudinary::Uploader.destroy(info["public_id"], options.merge(:type=>:asset))
96
110
  end
97
111
  FileUtils.rm_f(self.metadata_trash_file_path)
@@ -103,5 +117,8 @@ class Cloudinary::Static
103
117
  end
104
118
  File.open(self.metadata_trash_file_path, "w"){|f| f.print(metadata_lines.join)}
105
119
  end
120
+
121
+ $stderr.print "\nCompleted syncing static resources to Cloudinary\n"
122
+ $stderr.print counts.sort.reject{|k,v| v == 0}.map{|k,v| "#{v} #{k.to_s.gsub('_', ' ').capitalize}"}.join(", ") + "\n"
106
123
  end
107
124
  end
@@ -12,7 +12,7 @@ class Cloudinary::Uploader
12
12
  :callback=> options[:callback],
13
13
  :format=>options[:format],
14
14
  :type=>options[:type],
15
- :tags=>options[:tags] && Cloudinary::Utils.build_array(options[:tags]).join(",")}.reject{|k,v| v.blank?}
15
+ :tags=>options[:tags] && Cloudinary::Utils.build_array(options[:tags]).join(",")}
16
16
  if options[:eager]
17
17
  params[:eager] = options[:eager].map do
18
18
  |transformation, format|
@@ -104,7 +104,7 @@ class Cloudinary::Uploader
104
104
  resource_type = options.delete(:resource_type) || "image"
105
105
  result = nil
106
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, :timeout=>60) do
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
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
@@ -50,26 +50,29 @@ class Cloudinary::Utils
50
50
  secure = options.delete(:secure) || Cloudinary.config.secure
51
51
  private_cdn = options.delete(:private_cdn) || Cloudinary.config.private_cdn
52
52
  secure_distribution = options.delete(:secure_distribution) || Cloudinary.config.secure_distribution
53
-
54
- return source if (type.nil? || type == :asset) && source.match(%r(^https?:/)i)
55
- if source.start_with?("/")
56
- if source.start_with?("/images/")
57
- source = source.sub(%r(/images/), '')
58
- else
59
- return source
53
+ force_remote = options.delete(:force_remote)
54
+
55
+ if !force_remote
56
+ return source if (type.nil? || type == :asset) && source.match(%r(^https?:/)i)
57
+ if source.start_with?("/")
58
+ if source.start_with?("/images/")
59
+ source = source.sub(%r(/images/), '')
60
+ else
61
+ return source
62
+ end
63
+ end
64
+ @metadata ||= Cloudinary::Static.metadata
65
+ if @metadata["images/#{source}"]
66
+ return source if !Cloudinary.config.static_image_support
67
+ type = :asset
68
+ original_source = source
69
+ source = @metadata["images/#{source}"]["public_id"]
70
+ source += File.extname(original_source) if !format
71
+ elsif type == :asset
72
+ return source # requested asset, but no metadata - probably local file. return.
60
73
  end
61
- end
62
- type ||= :upload
63
- @metadata ||= Cloudinary::Static.metadata
64
- if @metadata["images/#{source}"]
65
- return source if !Cloudinary.config.static_image_support
66
- type = :asset
67
- original_source = source
68
- source = @metadata["images/#{source}"]["public_id"]
69
- source += File.extname(original_source) if !format
70
- elsif type == :asset
71
- return source # requested asset, but no metadata - probably local file. return.
72
74
  end
75
+ type ||= :upload
73
76
 
74
77
  if cloud_name.start_with?("/")
75
78
  prefix = "/res" + cloud_name
@@ -1,4 +1,4 @@
1
1
  # Copyright Cloudinary
2
2
  module Cloudinary
3
- VERSION = "1.0.3"
3
+ VERSION = "1.0.4"
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.3
5
+ version: 1.0.4
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-02 00:00:00 +03:00
15
+ date: 2012-04-04 00:00:00 +03:00
16
16
  default_executable:
17
17
  dependencies:
18
18
  - !ruby/object:Gem::Dependency