class ManifestStreamer(dirnode.DeepStats): implements(IPushProducer) def __init__(self, ctx, origin): dirnode.DeepStats.__init__(self, origin) self.req = IRequest(ctx) def setMonitor(self, monitor): self.monitor = monitor def pauseProducing(self): pass def resumeProducing(self): pass def stopProducing(self): self.monitor.cancel() def add_node(self, node, path): dirnode.DeepStats.add_node(self, node, path) d = {"path": path, "cap": node.get_uri()} if IDirectoryNode.providedBy(node): d["type"] = "directory" elif IFileNode.providedBy(node): d["type"] = "file" else: d["type"] = "unknown" v = node.get_verify_cap() if v: v = v.to_string() d["verifycap"] = v or "" r = node.get_repair_cap() if r: r = r.to_string() d["repaircap"] = r or "" si = node.get_storage_index() if si: si = base32.b2a(si) d["storage-index"] = si or "" j = simplejson.dumps(d, ensure_ascii=True) assert "\n" not in j self.req.write(j + "\n") def finish(self): stats = dirnode.DeepStats.get_results(self) d = { "type": "stats", "stats": stats, } j = simplejson.dumps(d, ensure_ascii=True) assert "\n" not in j self.req.write(j + "\n") return ""
class ManifestStreamer(dirnode.DeepStats): implements(IPushProducer) def __init__(self, ctx, origin): dirnode.DeepStats.__init__(self, origin) self.req = IRequest(ctx) def setMonitor(self, monitor): self.monitor = monitor def pauseProducing(self): pass def resumeProducing(self): pass def stopProducing(self): self.monitor.cancel() def add_node(self, node, path): dirnode.DeepStats.add_node(self, node, path) d = {"path": path, "cap": node.get_uri()} if IDirectoryNode.providedBy(node): d["type"] = "directory" elif IFileNode.providedBy(node): d["type"] = "file" else: d["type"] = "unknown" v = node.get_verify_cap() if v: v = v.to_string() d["verifycap"] = v or "" r = node.get_repair_cap() if r: r = r.to_string() d["repaircap"] = r or "" si = node.get_storage_index() if si: si = base32.b2a(si) d["storage-index"] = si or "" j = simplejson.dumps(d, ensure_ascii=True) assert "\n" not in j self.req.write(j+"\n") def finish(self): stats = dirnode.DeepStats.get_results(self) d = {"type": "stats", "stats": stats, } j = simplejson.dumps(d, ensure_ascii=True) assert "\n" not in j self.req.write(j+"\n") return ""
def simple(self, ctx, text, code=http.BAD_REQUEST): req = IRequest(ctx) req.setResponseCode(code) #req.responseHeaders.setRawHeaders("content-encoding", []) #req.responseHeaders.setRawHeaders("content-disposition", []) req.setHeader("content-type", "text/plain;charset=utf-8") if isinstance(text, unicode): text = text.encode("utf-8") req.setHeader("content-length", b"%d" % len(text)) req.write(text) # TODO: consider putting the requested URL here req.finishRequest(False)
def simple(self, ctx, text, code=http.BAD_REQUEST): req = IRequest(ctx) req.setResponseCode(code) #req.responseHeaders.setRawHeaders("content-encoding", []) #req.responseHeaders.setRawHeaders("content-disposition", []) req.setHeader("content-type", "text/plain;charset=utf-8") if isinstance(text, unicode): text = text.encode("utf-8") req.setHeader("content-length", str(len(text))) req.write(text) # TODO: consider putting the requested URL here req.finishRequest(False)
class DeepCheckStreamer(dirnode.DeepStats): implements(IPushProducer) def __init__(self, ctx, origin, verify, repair, add_lease): dirnode.DeepStats.__init__(self, origin) self.req = IRequest(ctx) self.verify = verify self.repair = repair self.add_lease = add_lease def setMonitor(self, monitor): self.monitor = monitor def pauseProducing(self): pass def resumeProducing(self): pass def stopProducing(self): self.monitor.cancel() def add_node(self, node, path): dirnode.DeepStats.add_node(self, node, path) data = {"path": path, "cap": node.get_uri()} if IDirectoryNode.providedBy(node): data["type"] = "directory" elif IFileNode.providedBy(node): data["type"] = "file" else: data["type"] = "unknown" v = node.get_verify_cap() if v: v = v.to_string() data["verifycap"] = v or "" r = node.get_repair_cap() if r: r = r.to_string() data["repaircap"] = r or "" si = node.get_storage_index() if si: si = base32.b2a(si) data["storage-index"] = si or "" if self.repair: d = node.check_and_repair(self.monitor, self.verify, self.add_lease) d.addCallback(self.add_check_and_repair, data) else: d = node.check(self.monitor, self.verify, self.add_lease) d.addCallback(self.add_check, data) d.addCallback(self.write_line) return d def add_check_and_repair(self, crr, data): data["check-and-repair-results"] = json_check_and_repair_results(crr) return data def add_check(self, cr, data): data["check-results"] = json_check_results(cr) return data def write_line(self, data): j = simplejson.dumps(data, ensure_ascii=True) assert "\n" not in j self.req.write(j+"\n") def finish(self): stats = dirnode.DeepStats.get_results(self) d = {"type": "stats", "stats": stats, } j = simplejson.dumps(d, ensure_ascii=True) assert "\n" not in j self.req.write(j+"\n") return ""
class DeepCheckStreamer(dirnode.DeepStats): def __init__(self, ctx, origin, verify, repair, add_lease): dirnode.DeepStats.__init__(self, origin) self.req = IRequest(ctx) self.verify = verify self.repair = repair self.add_lease = add_lease def setMonitor(self, monitor): self.monitor = monitor def pauseProducing(self): pass def resumeProducing(self): pass def stopProducing(self): self.monitor.cancel() def add_node(self, node, path): dirnode.DeepStats.add_node(self, node, path) data = {"path": path, "cap": node.get_uri()} if IDirectoryNode.providedBy(node): data["type"] = "directory" elif IFileNode.providedBy(node): data["type"] = "file" else: data["type"] = "unknown" v = node.get_verify_cap() if v: v = v.to_string() data["verifycap"] = v or "" r = node.get_repair_cap() if r: r = r.to_string() data["repaircap"] = r or "" si = node.get_storage_index() if si: si = base32.b2a(si) data["storage-index"] = si or "" if self.repair: d = node.check_and_repair(self.monitor, self.verify, self.add_lease) d.addCallback(self.add_check_and_repair, data) else: d = node.check(self.monitor, self.verify, self.add_lease) d.addCallback(self.add_check, data) d.addCallback(self.write_line) return d def add_check_and_repair(self, crr, data): data["check-and-repair-results"] = json_check_and_repair_results(crr) return data def add_check(self, cr, data): data["check-results"] = json_check_results(cr) return data def write_line(self, data): j = json.dumps(data, ensure_ascii=True) assert "\n" not in j self.req.write(j+"\n") def finish(self): stats = dirnode.DeepStats.get_results(self) d = {"type": "stats", "stats": stats, } j = json.dumps(d, ensure_ascii=True) assert "\n" not in j self.req.write(j+"\n") return ""
def renderHTTP(self, ctx): req = IRequest(ctx) req.setHeader('Content-Type', 'application/atom+xml') data = tostring(self.getFeed().serialize()) req.write(data) return ''