source_api_Image.bs

function ItemImages(id = "" as string, params = {} as object)
  ' This seems to cause crazy core dumps
  ' if there is a conflict between on disk images, and library.db
  resp = APIRequest(Substitute("Items/{0}/Images", id))
  data = getJson(resp)
  if data = invalid then return invalid

  results = []
  for each item in data
    tmp = CreateObject("roSGNode", "ImageData")
    tmp.json = item
    tmp.url = ImageURL(id, tmp.imagetype, params)
    results.push(tmp)
  end for
  return results
end function


function PosterImage(id as string, params = {} as object)
  images = ItemImages(id, params)
  if images = invalid then return invalid
  primary_image = invalid

  for each image in images
    if image.imagetype = "Primary"
      primary_image = image
    else if image.imagetype = "Logo" and primary_image = invalid
      primary_image = image
    else if image.imagetype = "Thumb" and primary_image = invalid
      primary_image = image
      ' maybe find more fallback images
    end if
  end for

  return primary_image
end function

function ImageURL(id, version = "Primary", params = {})
  ' set defaults
  if params.maxHeight = invalid
    param = { "maxHeight": "384" }
    params.append(param)
  end if
  if params.maxWidth = invalid
    param = { "maxWidth": "196" }
    params.append(param)
  end if
  if params.quality = invalid
    param = { "quality": "90" }
    params.append(param)
  end if
  url = Substitute("Items/{0}/Images/{1}", id, version)
  ' ?maxHeight=384&maxWidth=256&tag=<tag>&quality=90"
  return buildURL(url, params)
end function

function UserImageURL(id, params = {})
  ' set defaults
  if params.maxHeight = invalid
    params.append({ "maxHeight": "300" })
  end if
  if params.maxWidth = invalid
    params.append({ "maxWidth": "300" })
  end if
  if params.quality = invalid
    params.append({ "quality": "90" })
  end if

  url = Substitute("Users/{0}/Images/Primary", id)
  return buildURL(url, params)
end function