def extra(self): """The metadata for a file revision doesn't contain a webView link, and a revisionId isn't appropriate. GDocs don't have an md5, non-GDocs don't need a downloadExt. """ if self.is_google_doc: return {'downloadExt': utils.get_download_extension(self.raw)} return {'md5': self.raw['md5Checksum']}
def download(self, path, revision=None, range=None, **kwargs): if revision and not revision.endswith(settings.DRIVE_IGNORE_VERSION): # Must make additional request to look up download URL for revision response = yield from self.make_request( "GET", self.build_url("files", path.identifier, "revisions", revision, alt="json"), expects=(200,), throws=exceptions.MetadataError, ) data = yield from response.json() else: data = yield from self.metadata(path, raw=True) download_resp = yield from self.make_request( "GET", data.get("downloadUrl") or drive_utils.get_export_link(data), range=range, expects=(200, 206), throws=exceptions.DownloadError, ) if "fileSize" in data: return streams.ResponseStreamReader(download_resp, size=data["fileSize"]) # google docs, not drive files, have no way to get the file size # must buffer the entire file into memory stream = streams.StringStream((yield from download_resp.read())) if download_resp.headers.get("Content-Type"): stream.content_type = download_resp.headers["Content-Type"] if drive_utils.is_docs_file(data): stream.name = path.name + drive_utils.get_download_extension(data) return stream
async def download(self, path, revision=None, range=None, **kwargs): if revision and not revision.endswith(settings.DRIVE_IGNORE_VERSION): # Must make additional request to look up download URL for revision async with self.request( 'GET', self.build_url('files', path.identifier, 'revisions', revision, alt='json'), expects=(200, ), throws=exceptions.MetadataError, ) as response: data = await response.json() else: data = await self.metadata(path, raw=True) download_resp = await self.make_request( 'GET', data.get('downloadUrl') or drive_utils.get_export_link(data), range=range, expects=(200, 206), throws=exceptions.DownloadError, ) if 'fileSize' in data: return streams.ResponseStreamReader(download_resp, size=data['fileSize']) # google docs, not drive files, have no way to get the file size # must buffer the entire file into memory stream = streams.StringStream(await download_resp.read()) if download_resp.headers.get('Content-Type'): stream.content_type = download_resp.headers['Content-Type'] if drive_utils.is_docs_file(data): stream.name = path.name + drive_utils.get_download_extension(data) return stream
async def download(self, path, revision=None, range=None, **kwargs): if revision and not revision.endswith(settings.DRIVE_IGNORE_VERSION): # Must make additional request to look up download URL for revision async with self.request( 'GET', self.build_url('files', path.identifier, 'revisions', revision, alt='json'), expects=(200, ), throws=exceptions.MetadataError, ) as response: data = await response.json() else: data = await self.metadata(path, raw=True) download_resp = await self.make_request( 'GET', data.get('downloadUrl') or drive_utils.get_export_link(data), range=range, expects=(200, 206), throws=exceptions.DownloadError, ) if 'fileSize' in data: return streams.ResponseStreamReader(download_resp, size=data['fileSize']) # google docs, not drive files, have no way to get the file size # must buffer the entire file into memory stream = streams.StringStream(await download_resp.read()) if download_resp.headers.get('Content-Type'): stream.content_type = download_resp.headers['Content-Type'] if drive_utils.is_docs_file(data): stream.name = path.name + drive_utils.get_download_extension(data) return stream
def extra(self): ret = super().extra ret['webView'] = self.raw.get('alternateLink') if self.is_google_doc: ret['downloadExt'] = utils.get_download_extension(self.raw) else: if not hasattr(ret, 'hashes'): ret['hashes'] = {} ret['hashes']['md5'] = self.raw.get('md5Checksum') # no md5 for non-exportable file return ret
def extra(self): if self.is_google_doc: return {'downloadExt': utils.get_download_extension(self.raw)} return {'md5': self.raw['md5Checksum']}
def export_name(self): title = self.raw['title'] if self.is_google_doc: ext = utils.get_download_extension(self.raw) title += ext return title
def extra(self): ret = super().extra if self.is_google_doc: ret['downloadExt'] = utils.get_download_extension(self.raw) ret['webView'] = self.raw.get('alternateLink') return ret
def extra(self): ret = super().extra if utils.is_docs_file(self.raw): ret['downloadExt'] = utils.get_download_extension(self.raw['exportLinks']) return ret
def extra(self): ret = super().extra if utils.is_docs_file(self.raw): ret['downloadExt'] = utils.get_download_extension(self.raw) ret['viewUrl'] = self.raw.get('alternateLink') return ret
def extra(self): ret = super().extra if utils.is_docs_file(self.raw): ret['downloadExt'] = utils.get_download_extension(self.raw) ret['webView'] = self.raw.get('alternateLink') return ret
def extra(self): if utils.is_docs_file(self.raw): return {'downloadExt': utils.get_download_extension(self.raw)} return {'md5': self.raw['md5Checksum']}
def export_name(self): title = self.raw.get('originalFilename', self._path.name) if self.is_google_doc: ext = utils.get_download_extension(self.raw) title += ext return title
def extra(self): if self.is_google_doc: return {'downloadExt': utils.get_download_extension(self.raw)} return {'md5': self.raw['md5Checksum']}
def export_name(self): title = self.raw.get('originalFilename', self._path.name) if self.is_google_doc: ext = utils.get_download_extension(self.raw) title += ext return title
def export_name(self): title = self._file_title if self.is_google_doc: ext = utils.get_download_extension(self.raw) title += ext return title
def extra(self): ret = super().extra if utils.is_docs_file(self.raw): ret['downloadExt'] = utils.get_download_extension(self.raw['exportLinks']) return ret