Example #1
0
    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
Example #2
0
    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
Example #3
0
    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