def upload(self, response, file):
        """
        Upload the file.

        :param response: The response from the upload request.
        :type response: dict
        :param file: A file handler pointing to the file to upload.
        :returns: True if the file uploaded successfully, False otherwise, \
            and the JSON response from the API.
        :rtype: tuple
        """
        response = response.json()
        if not response.get('upload_url'):
            raise ValueError('Bad API response. No upload_url.')

        if not response.get('upload_params'):
            raise ValueError('Bad API response. No upload_params.')

        kwargs = response.get('upload_params')

        response = self._requester.request(
            'POST',
            use_auth=False,
            _url=response.get('upload_url'),
            file=file,
            _kwargs=combine_kwargs(**kwargs)
        )

        # remove `while(1);` that may appear at the top of a response
        response_json = json.loads(response.text.lstrip('while(1);'))

        return ('url' in response_json, response_json)
Upload the file.

        :param response: The response from the upload request.
        :type response: dict
        :param file: A file handler pointing to the file to upload.
        :returns: True if the file uploaded successfully, False otherwise, \
            and the JSON response from the API.
        :rtype: tuple