class SparkApi::Models::Photo

Constants

EDITABLE_FIELDS
FileName
Picture

Attributes

update_path[RW]

Public Class Methods

new(opts={}) click to toggle source
Calls superclass method SparkApi::Models::Base::new
# File lib/spark_api/models/photo.rb, line 13
def initialize(opts={})
  defaulted_opts = {}
  EDITABLE_FIELDS.each do |k|
    key = k.to_s()
    defaulted_opts[key] = opts[key] || nil
  end
  super(opts.merge(defaulted_opts))
end

Public Instance Methods

delete(args={}) click to toggle source
# File lib/spark_api/models/photo.rb, line 53
def delete(args={})
  connection.delete("#{update_path}/#{self.Id}", args)
end
exists?() click to toggle source
# File lib/spark_api/models/photo.rb, line 71
def exists?
  @attributes.include?("Id")
end
load_picture(file_name) click to toggle source
# File lib/spark_api/models/photo.rb, line 48
def load_picture(file_name)
  self.Picture = Base64.encode64(File.open(file_name, 'rb').read).gsub(/\n/, '')
  self.FileName = File.basename(file_name)
end
primary?() click to toggle source
# File lib/spark_api/models/photo.rb, line 22
def primary?
  @attributes["Primary"] == true
end
rollback(version) click to toggle source
# File lib/spark_api/models/photo.rb, line 57
def rollback(version)
  payload = {"Version" => version}
  connection.put "#{update_path}/#{self.Id}/versions/current", payload
end
rotate!(direction) click to toggle source
# File lib/spark_api/models/photo.rb, line 63
def rotate!(direction)
  unless [:clockwise, :counterclockwise].include? direction.to_sym
    raise ArgumentError, "Photo rotate failed. '#{direction}' is not supported."
  end
  payload = { 'Photos' => [{'Rotate' => direction.to_s }] }
  connection.put "#{self.update_path}/#{self.Id}", payload
end
save(arguments={}) click to toggle source
# File lib/spark_api/models/photo.rb, line 26
def save(arguments={})
  begin
    return save!(arguments)
  rescue BadResourceRequest => e
    SparkApi.logger.warn("Failed to save resource #{self}: #{e.message}")
  rescue NotFound => e
    SparkApi.logger.error("Failed to save resource #{self}: #{e.message}")
  end
  false
end
save!(arguments={}) click to toggle source
# File lib/spark_api/models/photo.rb, line 36
def save!(arguments={})
  payload = {"Photos" => [ build_photo_hash]}
  if exists?
    results = connection.put "#{update_path}/#{self.Id}", payload, arguments
  else
    results = connection.post update_path, payload, arguments
  end
  result = results.first
  load(result)
  true
end

Private Instance Methods

build_photo_hash() click to toggle source
# File lib/spark_api/models/photo.rb, line 77
def build_photo_hash
  results_hash = {}
  EDITABLE_FIELDS.each do |k|
    key = k.to_s
    results_hash[key] = @attributes[key] unless @attributes[key].nil?
  end
  results_hash
end