def default(self, id): safe_id = id if cherrypy.request.method == 'GET': filename = self.block_store.producer_filename(safe_id) response_body = serve_file(filename) return response_body # filename = self.block_store.filename(safe_id) # try: # response_body = serve_file(filename) # return response_body # except cherrypy.HTTPError as he: # if he.status == 404: # response_body = serve_file(self.block_store.producer_filename(safe_id)) # return response_body # else: # raise elif cherrypy.request.method == 'POST': request_body = cherrypy.request.body.read() new_ref = ref_from_string(request_body, safe_id) if self.backup_sender is not None: self.backup_sender.add_data(safe_id, request_body) #if self.task_pool is not None: # self.task_pool.publish_refs({safe_id : new_ref}) return simplejson.dumps(new_ref, cls=SWReferenceJSONEncoder) elif cherrypy.request.method == 'HEAD': if os.path.exists(self.block_store.filename(id)): return else: raise cherrypy.HTTPError(404) else: raise cherrypy.HTTPError(405)
def ref_from_object(object, encoder, id): """Encodes an object, returning either a DataValue or ConcreteReference as appropriate""" cache_object(object, encoder, id) buffer = StringIO() encoders[encoder](object, buffer) ret = ref_from_string(buffer.getvalue(), id) buffer.close() return ret
def index(self): if cherrypy.request.method == 'POST': id = self.block_store.allocate_new_id() request_body = cherrypy.request.body.read() new_ref = ref_from_string(request_body, id) if self.backup_sender is not None: self.backup_sender.add_data(id, request_body) #if self.task_pool is not None: # self.task_pool.publish_refs({id : new_ref}) return simplejson.dumps(new_ref, cls=SWReferenceJSONEncoder) elif cherrypy.request.method == 'GET': return serve_file(self.block_store.generate_block_list_file()) else: raise cherrypy.HTTPError(405)