code: def analyze(self, handle, filename):
          
          # multipart post files.
          files = {"sample_file": (filename, handle)}
  
          # ensure the handle is at offset 0.
          handle.seek(0)
  
          response = self._request("/sample/submit", method='POST', files=files, headers=self.headers)
  
          try:
              if response.status_code == 200 and not response.json()['data']['errors']:
                  # only support single-file submissions; just grab the first one.
                  return response.json()['data']['samples'][0]['sample_id']
              else:
                  raise sandboxapi.SandboxError("api error in analyze ({u}): {r}".format(u=response.url, r=response.content))
          except (ValueError, KeyError, IndexError) as e:
              raise sandboxapi.SandboxError("error in analyze: {e}".format(e=e))
docs: Submit a file for analysis.
  
          :type  handle:   File handle
          :param handle:   Handle to file to upload for analysis.
          :type  filename: str
          :param filename: File name.
  
          :rtype:  str
          :return: File ID as a string