def send_get_data(self, data_key, path=None): data_key_enc = mbase32.encode(data_key) if path: cmd = "getdata {} {}".format(data_key_enc, path) else: cmd = "getdata {}".format(data_key_enc) r = yield from self.send_command(cmd) data_rw = chord_tasks.DataResponseWrapper(data_key) p0 = r.find(b"version=[") + 9 p1 = r.find(b']', p0) ver_str = r[p0:p1] data_rw.version = int(ver_str) if ver_str != b"None" else None p0 = p1 + 1 p0 = r.find(b"data:\r\n", p0) + 7 data = r[p0:-2] # -2 for the "\r\n". #FIXME: This is ambiguous with data that == "Not found." :) data_rw.data = data if data != b"Not found." else None return data_rw
def send_get_targeted_data(self, data_key): data_key_enc = mbase32.encode(data_key) cmd = "gettargeteddata {}".format(data_key_enc) r = yield from self.send_command(cmd) data_rw = chord_tasks.DataResponseWrapper(data_key) p0 = r.find(b"data:\r\n") + 7 data_rw.data = r[p0:-2] # -2 for the "\r\n". return data_rw
def send_find_key(self, prefix, target_key=None, significant_bits=None): cmd = "findkey " + mbase32.encode(prefix) if target_key: cmd += " " + mbase32.encode(target_key) if significant_bits: cmd += " " + str(significant_bits) r = yield from self.send_command(cmd) p0 = r.find(b"data_key=[") + 10 p1 = r.find(b']', p0) data_key = r[p0:p1].decode() if data_key == "None": data_key = None else: data_key = mbase32.decode(data_key) data_rw = chord_tasks.DataResponseWrapper(data_key) return data_rw