Skip to content
Snippets Groups Projects
Commit ec6296e4 authored by Simon Désaulniers's avatar Simon Désaulniers Committed by Adrien Béraud
Browse files

http_server: enable WHERE filtering for GET method

parent b96d0de8
No related branches found
No related tags found
No related merge requests found
...@@ -32,10 +32,13 @@ class DhtServer(resource.Resource): ...@@ -32,10 +32,13 @@ class DhtServer(resource.Resource):
self.node.bootstrap(b_url.hostname, str(b_url.port) if b_url.port else '4222') self.node.bootstrap(b_url.hostname, str(b_url.port) if b_url.port else '4222')
def render_GET(self, req): def render_GET(self, req):
uri = req.uri[1:] uri = req.uri[1:].decode().rsplit('?', 1)[0]
h = dht.InfoHash(uri) if len(uri) == 40 else dht.InfoHash.get(uri.decode()) h = dht.InfoHash(uri.encode()) if len(uri) == 40 else dht.InfoHash.get(uri)
print('GET', '"'+uri.decode()+'"', h) w = dht.Where('WHERE '+''.join(k.decode()+'='+req.args[k][0].decode()+','
res = self.node.get(h) for k in req.args.keys()
if k in [b'id', b'user_type', b'value_type', b'owner', b'seq'])[:-1])
print('GET', '"'+uri+'"', h, w)
res = self.node.get(h, where=w)
req.setHeader(b"content-type", b"application/json") req.setHeader(b"content-type", b"application/json")
return json.dumps({'{:x}'.format(v.id):{'base64':base64.b64encode(v.data).decode()} for v in res}).encode() return json.dumps({'{:x}'.format(v.id):{'base64':base64.b64encode(v.data).decode()} for v in res}).encode()
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment