docs: def api_download(service, fileId, authorisation):
      '''Given a Send url, download and return the encrypted data and metadata'''
      data = tempfile.SpooledTemporaryFile(max_size=SPOOL_SIZE, mode='w+b')
  
      headers = {'Authorization' : 'send-v1 ' + unpadded_urlsafe_b64encode(authorisation)}
      url = service + 'api/download/' + fileId
  
      r = requests.get(url, headers=headers, stream=True)
      r.raise_for_status()
      content_length = int(r.headers['Content-length'])
  
      pbar = progbar(content_length)
      for chunk in r.iter_content(chunk_size=CHUNK_SIZE):
          data.write(chunk)
          pbar.update(len(chunk))
      pbar.close()
  
      data.seek(0)
      return data