Method: SBF::Client::PhotoEndpoint#update

Defined in:
lib/stbaldricks/endpoints/photo.rb

#update(id = nil, entity_or_hash = nil, with = {}) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/stbaldricks/endpoints/photo.rb', line 22

def update(id = nil, entity_or_hash = nil, with = {})
  if entity_or_hash.is_a?(SBF::Client::BaseEntity)
    # If someone has passed in an entity, just convert it to a hash
    data = entity_or_hash.dirty_data
    data.merge!(id: id) unless id.nil?
    data.merge!(id: entity_or_hash.id) if id.nil? && !entity_or_hash.id.nil?
  elsif entity_or_hash.is_a?(Hash)
    # If someone has passed in a hash, make sure all of it's values match fields in the entity class
    data = sanitize(entity_or_hash)
  else
    raise SBF::Client::Error, 'Invalid Data'
  end

  filename = data.delete(:filename)
  file = data.delete(:file)

  with = normalize_with(with)
  data[:with] = with
  response = if file
               SBF::Client::Api::Request.file_post_request(path: "#{base_uri}/update", params: data, file: file, filename: filename)
             else
               SBF::Client::Api::Request.post_request("#{base_uri}/update", data)
             end

  hydrated_entity(response, data, entity_or_hash)
end