# Copyright 2017-2018 Lars Wirzenius # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . import apifw import ick2 class BlobAPI: def __init__(self): self._blobs = ick2.BlobStore() def get_blob_directory(self): return self._blobs.get_blob_directory() def set_blob_directory(self, dirname): self._blobs.set_blob_directory(dirname) def find_missing_route(self, missing_path): path = '/blobs/' return [ { 'method': 'PUT', 'path': path, 'callback': self.put_blob, 'big-blobs': True, }, { 'method': 'GET', 'path': path, 'callback': self.get_blob, }, ] def put_blob(self, content_type, body, blob_id, **kwargs): ick2.log.log( 'info', msg_text='blob uploaded', blob_id=blob_id, kwargs=kwargs) self._blobs.store_blob_from_reader(blob_id, body) return ick2.OK('') def get_blob(self, content_type, body, blob_id, **kwargs): filename = self._blobs.blob_filename(blob_id) ick2.log.log( 'info', msg_text='blob requested', blob_id=blob_id, kwargs=kwargs, filename=filename) raise apifw.StaticFile(filename)