Add media dimensions (#2448)
* Fixes #1985 - add migration AddMediaAttachmentMeta, which add meta field to media_attachments - before saving attachment, set file meta if needed - add meta in api * add spec * align the “size” format for image and video * fix code climate * fixes media_attachment_spec.rb
This commit is contained in:
committed by
Eugen Rochko
parent
8fe36654ef
commit
193dddb433
@ -51,6 +51,7 @@ class MediaAttachment < ApplicationRecord
|
||||
|
||||
before_create :set_shortcode
|
||||
before_post_process :set_type_and_extension
|
||||
before_save :set_meta
|
||||
|
||||
class << self
|
||||
private
|
||||
@ -112,6 +113,30 @@ class MediaAttachment < ApplicationRecord
|
||||
file.instance_write :file_name, [basename, extension].delete_if(&:empty?).join('.')
|
||||
end
|
||||
|
||||
def set_meta
|
||||
meta = populate_meta
|
||||
return if meta == {}
|
||||
file.instance_write :meta, meta
|
||||
end
|
||||
|
||||
def populate_meta
|
||||
meta = {}
|
||||
file.queued_for_write.each do |style, file|
|
||||
begin
|
||||
geo = Paperclip::Geometry.from_file file
|
||||
meta[style] = {
|
||||
width: geo.width.to_i,
|
||||
height: geo.height.to_i,
|
||||
size: "#{geo.width.to_i}x#{geo.height.to_i}",
|
||||
aspect: geo.width.to_f / geo.height.to_f,
|
||||
}
|
||||
rescue Paperclip::Errors::NotIdentifiedByImageMagickError
|
||||
meta[style] = {}
|
||||
end
|
||||
end
|
||||
meta
|
||||
end
|
||||
|
||||
def appropriate_extension
|
||||
mime_type = MIME::Types[file.content_type]
|
||||
|
||||
|
Reference in New Issue
Block a user