class Cloudkeeper::Entities::Image

Constants

IMAGE_LIST_IMAGE_ATTRIBUTES

Attributes

checksum[RW]
digest[RW]
image_files[RW]
size[RW]
uri[RW]

Public Class Methods

from_hash(image_hash) click to toggle source
# File lib/cloudkeeper/entities/image.rb, line 35
def self.from_hash(image_hash)
  raise Cloudkeeper::Errors::Parsing::InvalidImageHashError, 'invalid image hash' if image_hash.blank?

  image_hash.deep_symbolize_keys!
  image_hash.keep_if { |key| IMAGE_LIST_IMAGE_ATTRIBUTES.include? key }

  Image.new image_hash[:'hv:uri'], image_hash[:'sl:checksum:sha512'], image_hash[:'hv:size'],
            Digest::SHA512.hexdigest(image_hash.to_json)
rescue Cloudkeeper::Errors::ArgumentError => ex
  raise Cloudkeeper::Errors::Parsing::InvalidImageHashError, ex, "image hash #{image_hash.inspect} " \
                                                                 "doesn't contain all the necessary data"
end
new(uri, checksum, size = 0, digest = '', image_files = []) click to toggle source
# File lib/cloudkeeper/entities/image.rb, line 11
def initialize(uri, checksum, size = 0, digest = '', image_files = [])
  raise Cloudkeeper::Errors::ArgumentError, 'uri and checksum cannot be nil nor empty' if uri.blank? || checksum.blank?

  @uri = uri
  @checksum = checksum
  @size = size
  @digest = digest
  @image_files = image_files
end

Public Instance Methods

add_image_file(file) click to toggle source
# File lib/cloudkeeper/entities/image.rb, line 21
def add_image_file(file)
  raise Cloudkeeper::Errors::ArgumentError, 'image file cannot be nil' if file.nil?

  image_files << file
end
available_formats() click to toggle source
# File lib/cloudkeeper/entities/image.rb, line 27
def available_formats
  image_files.map(&:format).sort
end
image_file(format) click to toggle source
# File lib/cloudkeeper/entities/image.rb, line 31
def image_file(format)
  image_files.select { |file| file.format == format }.first
end