module AdLeads::Client::Image

Public Instance Methods

create_image(creative_group_id, ad_id, options) click to toggle source
# File lib/ad_leads/image.rb, line 4
def create_image(creative_group_id, ad_id, options)
  post image_root_path(creative_group_id, ad_id), options
end
upload_image(creative_group_id, ad_id, image_id, file) click to toggle source
# File lib/ad_leads/image.rb, line 8
def upload_image(creative_group_id, ad_id, image_id, file)
  remaining_tries ||= 3
  post image_upload_path(creative_group_id, ad_id, image_id), image_upload_opts(creative_group_id, ad_id, image_id, file)
rescue AdLeads::EtagMismatchError
  remaining_tries -= 1
  retry unless remaining_tries.zero?
end

Private Instance Methods

image_etag(creative_group_id, ad_id, image_id) click to toggle source
# File lib/ad_leads/image.rb, line 33
def image_etag(creative_group_id, ad_id, image_id)
  get "/creativegroups/#{creative_group_id}/creatives/#{ad_id}/images/#{image_id}"
end
image_root_path(creative_group_id, ad_id) click to toggle source
# File lib/ad_leads/image.rb, line 18
def image_root_path(creative_group_id, ad_id)
  "/creativegroups/#{creative_group_id}/creatives/#{ad_id}/images"
end
image_upload_opts(creative_group_id, ad_id, image_id, file) click to toggle source
# File lib/ad_leads/image.rb, line 26
def image_upload_opts(creative_group_id, ad_id, image_id, file)
  {
    file: Faraday::UploadIO.new(file, 'image/jpeg'),
    etag: image_etag(creative_group_id, ad_id, image_id).headers['Etag']
  }
end
image_upload_path(creative_group_id, ad_id, image_id) click to toggle source
# File lib/ad_leads/image.rb, line 22
def image_upload_path(creative_group_id, ad_id, image_id)
  "/creativegroups/#{creative_group_id}/creatives/#{ad_id}/images/#{image_id}/file"
end