code: def _send_data(self, data, start_offset, file_len):
      
      headers = {}
      end_offset = start_offset + len(data) - 1
  
      if data:
        headers['content-range'] = ('bytes %d-%d/%s' %
                                    (start_offset, end_offset, file_len))
      else:
        headers['content-range'] = ('bytes */%s' % file_len)
  
      status, response_headers, content = self._api.put_object(
          self._path_with_token, payload=data, headers=headers)
      if file_len == '*':
        expected = 308
      else:
        expected = 200
      errors.check_status(status, [expected], self._path, headers,
                          response_headers, content,
                          {'upload_path': self._path_with_token})
docs: Send the block to the storage service.
  
      This is a utility method that does not modify self.
  
      Args:
        data: data to send in str.
        start_offset: start offset of the data in relation to the file.
        file_len: an int if this is the last data to append to the file.
          Otherwise '*'.