def get(self): """Export a file to the format specified via the associated extension library""" if settings.CACHE_ENABLED: try: cached_stream = yield from self.cache_provider.download(self.cache_file_path) except waterbutler.core.exceptions.DownloadError as e: assert e.code == 404, 'Non-404 DownloadError {!r}'.format(e) logger.info('No cached file found; Starting export [{}]'.format(self.cache_file_path)) else: logger.info('Cached file found; Sending downstream [{}]'.format(self.cache_file_path)) self._set_headers() return (yield self.write_stream(cached_stream)) yield from self.local_cache_provider.upload( (yield from self.provider.download()), self.source_file_path ) exporter = utils.make_exporter( self.metadata.ext, self.source_file_path.full_path, self.output_file_path.full_path, self.format ) loop = asyncio.get_event_loop() yield from loop.run_in_executor(None, exporter.export) with open(self.output_file_path.full_path, 'rb') as fp: self._set_headers() yield self.write_stream(waterbutler.core.streams.FileStreamReader(fp))
def get(self): """Export a file to the format specified via the associated extension library""" if settings.CACHE_ENABLED: try: cached_stream = yield from self.cache_provider.download( self.cache_file_path) except waterbutler.core.exceptions.DownloadError as e: assert e.code == 404, 'Non-404 DownloadError {!r}'.format(e) logger.info( 'No cached file found; Starting export [{}]'.format( self.cache_file_path)) else: logger.info( 'Cached file found; Sending downstream [{}]'.format( self.cache_file_path)) self._set_headers() return (yield self.write_stream(cached_stream)) yield from self.local_cache_provider.upload( (yield from self.provider.download()), self.source_file_path) exporter = utils.make_exporter(self.metadata.ext, self.source_file_path.full_path, self.output_file_path.full_path, self.format) loop = asyncio.get_event_loop() yield from loop.run_in_executor(None, exporter.export) with open(self.output_file_path.full_path, 'rb') as fp: self._set_headers() yield self.write_stream( waterbutler.core.streams.FileStreamReader(fp))
async def get(self): """Export a file to the format specified via the associated extension library""" # File is already in the requested format if self.metadata.ext.lower() == ".{}".format(self.format.lower()): await self.write_stream(await self.provider.download()) logger.info('Exported {} with no conversion.'.format(self.format)) self.metrics.add('export.conversion', 'noop') return if settings.CACHE_ENABLED: try: cached_stream = await self.cache_provider.download( self.cache_file_path) except DownloadError as e: assert e.code == 404, 'Non-404 DownloadError {!r}'.format(e) logger.info( 'No cached file found; Starting export [{}]'.format( self.cache_file_path)) self.metrics.add('cache_file.result', 'miss') else: logger.info( 'Cached file found; Sending downstream [{}]'.format( self.cache_file_path)) self.metrics.add('cache_file.result', 'hit') self._set_headers() return await self.write_stream(cached_stream) await self.local_cache_provider.upload(await self.provider.download(), self.source_file_path) exporter = utils.make_exporter( self.metadata.ext, self.source_file_path.full_path, self.output_file_path.full_path, self.format, self.metadata, ) self.extension_metrics.add('class', exporter._get_module_name()) loop = asyncio.get_event_loop() await loop.run_in_executor(None, exporter.export) self.exporter_metrics = exporter.exporter_metrics with open(self.output_file_path.full_path, 'rb') as fp: self._set_headers() await self.write_stream( waterbutler.core.streams.FileStreamReader(fp))
def render(self): if self.renderer.file_required: exporter = utils.make_exporter(self.metadata.ext, self.file_path, self.export_file_path, self.map['format']) exporter.export() rendition = self.renderer.render() if self.renderer.file_required: try: os.remove(self.export_file_path) except FileNotFoundError: pass return rendition
async def get(self): """Export a file to the format specified via the associated extension library""" # File is already in the requested format if self.metadata.ext.lower() == ".{}".format(self.format.lower()): await self.write_stream(await self.provider.download()) logger.info('Exported {} with no conversion.'.format(self.format)) self.metrics.add('export.conversion', 'noop') return if settings.CACHE_ENABLED: try: cached_stream = await self.cache_provider.download(self.cache_file_path) except DownloadError as e: assert e.code == 404, 'Non-404 DownloadError {!r}'.format(e) logger.info('No cached file found; Starting export [{}]'.format(self.cache_file_path)) self.metrics.add('cache_file.result', 'miss') else: logger.info('Cached file found; Sending downstream [{}]'.format(self.cache_file_path)) self.metrics.add('cache_file.result', 'hit') self._set_headers() return await self.write_stream(cached_stream) await self.local_cache_provider.upload( await self.provider.download(), self.source_file_path ) exporter = utils.make_exporter( self.metadata.ext, self.source_file_path.full_path, self.output_file_path.full_path, self.format, self.metadata, ) self.extension_metrics.add('class', exporter._get_module_name()) loop = asyncio.get_event_loop() await loop.run_in_executor(None, exporter.export) self.exporter_metrics = exporter.exporter_metrics with open(self.output_file_path.full_path, 'rb') as fp: self._set_headers() await self.write_stream(waterbutler.core.streams.FileStreamReader(fp))
def render(self): if self.renderer.file_required: exporter = utils.make_exporter( self.metadata.ext, self.file_path, self.export_file_path, self.map['format'] ) exporter.export() rendition = self.renderer.render() if self.renderer.file_required: try: os.remove(self.export_file_path) except FileNotFoundError: pass return rendition