photofy 0.5.5 → 0.6.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/photofy/core.rb +29 -16
  3. metadata +4 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: efacdfd93fa55a55f88a584c9122a7d8a69795dc
4
- data.tar.gz: 4dd76bf79f2a2588acf1c9c5f3e1e1f8da194365
3
+ metadata.gz: a52ce7b29743b3206b06d5f9e4cc7675942410a7
4
+ data.tar.gz: c9d927a0fe18e9cdf4a504468a76560c69a28e3c
5
5
  SHA512:
6
- metadata.gz: 900cc2cdbc2e49a707a95b136279307c5eb7712d7264b47599eb749c48f0035d485ce1089d0ae4ead1d613b2633fab71478df30fffcf636195f173e8d3de8c29
7
- data.tar.gz: 1f432bd79175fced2203e5c3cab410f94389b807a2a4e0d160addc28976bf6e5ee167dab827022d9bb6e81638cb966375205ab56c8f9b2b4decab0b3fff1e1a5
6
+ metadata.gz: 83f4520d79373a4986eedfd27ee7936d1a692a808e89d59a6d233bd7607389784fa66df1e062826a8401857b0eb6b9f3545e124536abf45a18c7502946dc405f
7
+ data.tar.gz: 4d42053a929877b537be04c3265847540b101e9a84a7481c71533e77257a8ae9857125ba8ca69d6ebd0a63a413cf75122c4ddf620c41577bfbe71231c026bc16
data/lib/photofy/core.rb CHANGED
@@ -21,7 +21,7 @@ module Photofy
21
21
  #will give a 'stamp' attribute which on save of 'profile' photo field will scale it to 25 x 25 dimensions
22
22
  #after_photofy :profile, :portfolio, Proc.new{|img| img.scale(150, 250)}
23
23
  #will give a 'portfolio' attribute which on save of 'profile' photo field will scale it to 150 x 250 dimensions
24
- def after_photofy(parent_photo_field, photo_field, proc = Proc.new { |img| puts "Rmagick image: #{img.inspect}" })
24
+ def after_photofy(parent_photo_field, photo_field, proc = Proc.new {|img| puts "Rmagick image: #{img.inspect}"})
25
25
  photofy(photo_field, image_processor: proc, parent_photo_field: parent_photo_field)
26
26
  end
27
27
 
@@ -97,11 +97,11 @@ module Photofy
97
97
  send('initialize_photo_buffers')
98
98
 
99
99
  if @photo_file_buffer[photo_field].nil?
100
- if s3_connected?
100
+ if s3_connected?
101
101
  if send("#{photo_field}_persisted?")
102
102
  _file = nil
103
103
  file = Tempfile.new('foo', :encoding => 'ascii-8bit')
104
- s3_bucket.objects[send("#{photo_field}_path")].read { |chunk| file.write(chunk) }
104
+ s3_bucket.objects[send("#{photo_field}_path")].read {|chunk| file.write(chunk)}
105
105
  file.rewind
106
106
  _file = file.read
107
107
  file.close
@@ -148,14 +148,27 @@ module Photofy
148
148
 
149
149
  file_upload.rewind
150
150
  elsif file_upload.class == String
151
- #unless self.class.photo_formats[photo_field].include?(File.extname(file_upload).downcase)
152
- # (@photo_fields_errors ||= {})[photo_field.to_sym] = options[:message]
153
- # return false
154
- #else
155
- # (@photo_fields_errors ||= {}).delete(photo_field.to_sym)
156
- #end
157
- @photo_file_buffer[photo_field] = file_upload
158
- #@photo_file_ofn[photo_field] = File.basename(file_upload.path) #As there is nothing like original_file_name for a string :)
151
+
152
+ # For handling base 64 encoded image
153
+ if file_upload.match(/\Adata:([-\w]+\/[-\w\+\.]+)?;base64,/)
154
+ file_upload_parts = file_upload.match(/\Adata:([-\w]+\/[-\w\+\.]+)?;base64,(.*)/m) || []
155
+ extension = MIME::Types[file_upload_parts[1]].first.preferred_extension
156
+
157
+ unless self.class.photo_formats[photo_field].include?(".#{extension}")
158
+ (@photo_fields_errors ||= {})[photo_field.to_sym] = options[:message]
159
+ return false
160
+ else
161
+ (@photo_fields_errors ||= {}).delete(photo_field.to_sym)
162
+ end
163
+
164
+ @photo_file_buffer[photo_field] = Base64.decode64(file_upload_parts[2])
165
+ @photo_file_ofn[photo_field] = "#{SecureRandom.uuid}.#{extension}"
166
+
167
+ else
168
+ @photo_file_buffer[photo_field] = file_upload
169
+
170
+ end
171
+
159
172
  end
160
173
 
161
174
  file_upload
@@ -186,7 +199,7 @@ module Photofy
186
199
  _parent_file_path = send("#{parent_photo_field}_path")
187
200
  _temp_file_path = File.join(Rails.root, File.basename(_parent_file_path))
188
201
  file = File.open(_temp_file_path, 'wb')
189
- s3_bucket.objects[_parent_file_path].read { |chunk| file.write(chunk) }
202
+ s3_bucket.objects[_parent_file_path].read {|chunk| file.write(chunk)}
190
203
  file.close
191
204
  file = File.open(_temp_file_path)
192
205
  send("#{photo_field}=", file)
@@ -206,7 +219,7 @@ module Photofy
206
219
 
207
220
  unless proc.nil?
208
221
  file = Tempfile.new('foo', :encoding => 'ascii-8bit')
209
- s3_bucket.objects[send("#{photo_field}_path")].read { |chunk| file.write(chunk) }
222
+ s3_bucket.objects[send("#{photo_field}_path")].read {|chunk| file.write(chunk)}
210
223
  file.rewind
211
224
 
212
225
  img = Magick::Image.read(file.path).first
@@ -217,8 +230,8 @@ module Photofy
217
230
  file.unlink # deletes the temp file
218
231
  end
219
232
  else
220
- File.delete(send("#{photo_field}_path")) if File.exist?(send("#{photo_field}_path")) #Clearing any existing file at the path
221
- File.open(send("#{photo_field}_path_to_write"), "wb+") { |f| f.puts(@photo_file_buffer[photo_field]) }
233
+ File.delete(send("#{photo_field}_path")) if File.exist?(send("#{photo_field}_path")) #Clearing any existing file at the path
234
+ File.open(send("#{photo_field}_path_to_write"), "wb+") {|f| f.puts(@photo_file_buffer[photo_field])}
222
235
 
223
236
  unless proc.nil?
224
237
  FileUtils.copy(send("#{photo_field}_path_to_write"), send("#{photo_field}_path_to_write", "original_source"))
@@ -263,7 +276,7 @@ module Photofy
263
276
  def collect_photo_formats(photo_field, options)
264
277
  if options.is_a?(Hash)
265
278
  @@photo_formats ||= {}
266
- @@photo_formats[photo_field] = options[:formats].is_a?(Array) ? options[:formats].collect { |x| x.starts_with?(".") ? x : ".#{x}" } : [".jpeg", ".jpg", ".gif", ".png", ".bmp"]
279
+ @@photo_formats[photo_field] = options[:formats].is_a?(Array) ? options[:formats].collect {|x| x.starts_with?(".") ? x : ".#{x}"} : [".jpeg", ".jpg", ".gif", ".png", ".bmp"]
267
280
  else
268
281
  raise 'InvalidArguments'
269
282
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: photofy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.5
4
+ version: 0.6.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Praveen Kumar Sinha
@@ -10,11 +10,12 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2016-10-04 00:00:00.000000000 Z
13
+ date: 2017-09-07 00:00:00.000000000 Z
14
14
  dependencies: []
15
15
  description: |2
16
16
  A simple gem to add accessors on rails models for file upload of pictures/assets (which will be persisted on remote media's disk on object save).
17
17
  Refer documentation for more help.
18
+ Latest happening: Now with Base64 encoded image support.
18
19
  email: praveen.kumar.sinha@gmail.com
19
20
  executables: []
20
21
  extensions: []
@@ -45,7 +46,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
45
46
  version: '0'
46
47
  requirements: []
47
48
  rubyforge_project:
48
- rubygems_version: 2.5.1
49
+ rubygems_version: 2.6.12
49
50
  signing_key:
50
51
  specification_version: 4
51
52
  summary: Photofy