docs: def update_image_location(self, timeline_json):
          """Update the image location."""
          if not timeline_json:
              return False
  
          # If we get a list of objects back (likely)
          # then we just want the first one as it should be the "newest"
          if isinstance(timeline_json, (tuple, list)):
              timeline_json = timeline_json[0]
  
          # Verify that the event code is of the "CAPTURE IMAGE" event
          event_code = timeline_json.get('event_code')
          if event_code != TIMELINE.CAPTURE_IMAGE['event_code']:
              raise AbodeException((ERROR.CAM_TIMELINE_EVENT_INVALID))
  
          # The timeline response has an entry for "file_path" that acts as the
          # location of the image within the Abode servers.
          file_path = timeline_json.get('file_path')
          if not file_path:
              raise AbodeException((ERROR.CAM_IMAGE_REFRESH_NO_FILE))
  
          # Perform a "head" request for the image and look for a
          # 302 Found response
          url = CONST.BASE_URL + file_path
          response = self._abode.send_request("head", url)
  
          if response.status_code != 302:
              _LOGGER.warning("Unexected response code %s with body: %s",
                              str(response.status_code), response.text)
              raise AbodeException((ERROR.CAM_IMAGE_UNEXPECTED_RESPONSE))
  
          # The response should have a location header that is the actual
          # location of the image stored on AWS
          location = response.headers.get('location')
          if not location:
              raise AbodeException((ERROR.CAM_IMAGE_NO_LOCATION_HEADER))
  
          self._image_url = location
  
          return True