def post(self, prefix, file_path): if not self.check_post_etag(prefix, file_path, self.request.headers.get('If-Match')): return file_size = self.temp.tell() yield self._authorize_upload_request(file_path, file_size, prefix) self.finish_database() self.temp.seek(0) storage_object, size_diff = yield self.store_file(prefix, file_path, self.temp.name) self.temp.close() mon.TRAFFIC_REQUEST.inc(storage_object.size) yield self.save_size_log(prefix, size_diff) self.set_status(204) self.set_header('ETag', storage_object.etag) path = '{}/{}'.format(prefix, file_path) pubsub = self.get_pubsub_cls()() yield pubsub.publish(path.encode(), { 'operation': 'POST', 'prefix': prefix, 'path': path, 'etag': storage_object.etag, }) self.finish()
def delete(self, prefix, file_path): size = yield self.delete_file(prefix, file_path) yield self.save_size_log(prefix, -size) self.set_status(204) path = '{}/{}'.format(prefix, file_path) pubsub = self.get_pubsub_cls()() yield pubsub.publish(path.encode(), { 'operation': 'DELETE', 'prefix': prefix, 'path': path, }) self.finish()