class Square::Item

docs.connect.squareup.com/api/connect/v1/#navsection-itemmanagement

Public Class Methods

upload_image(image_url, item_id) click to toggle source

Upload an image for an item. docs.connect.squareup.com/api/connect/v1/#post-image

@param image_url [String] Image URL. @param item_id [String] Square item id.

@return [Net::HTTPResponse] API response.

# File lib/square/item.rb, line 20
def self.upload_image(image_url, item_id)
  image = open(image_url)
  filename = File.basename(image_url)

  uri = URI.parse("#{Square.api_host}/v1/me/#{instance_variable_get('@endpoint_base')}/#{item_id}/image")
  connection = Net::HTTP.new(uri.host, uri.port)
  connection.use_ssl = (uri.scheme == 'https')

  # Making this request here because RestClient doesn't do multipart
  # requests the way Square wants it.
  request = Net::HTTP::Post::Multipart.new(
    uri.path,
    image_data: UploadIO.new(image, 'image/jpeg', filename)
  )

  # Copy the auth header.
  request['Authorization'] = Square.request_headers(Square.access_token)[:authorization]
  connection.request(request)
end