Changeset View
Changeset View
Standalone View
Standalone View
swh/graph/server/app.py
Show First 20 Lines • Show All 97 Lines • ▼ Show 20 Lines | async def visit_paths(request): | ||||
async with stream_response(request) as response: | async with stream_response(request) as response: | ||||
async for res_path in it: | async for res_path in it: | ||||
res_path_pid = [backend.node2pid[n] for n in res_path] | res_path_pid = [backend.node2pid[n] for n in res_path] | ||||
line = json.dumps(res_path_pid) | line = json.dumps(res_path_pid) | ||||
await response.write('{}\n'.format(line).encode()) | await response.write('{}\n'.format(line).encode()) | ||||
return response | return response | ||||
def get_count_handler(ttype): | |||||
async def count(request): | |||||
backend = request.app['backend'] | |||||
src = request.match_info['src'] | |||||
edges = request.query.get('edges', '*') | |||||
direction = request.query.get('direction', 'forward') | |||||
src_node = backend.pid2node[src] | |||||
cnt = backend.count(ttype, direction, edges, src_node) | |||||
return aiohttp.web.Response(body=str(cnt), | |||||
content_type='application/json') | |||||
return count | |||||
def make_app(backend, **kwargs): | def make_app(backend, **kwargs): | ||||
app = RPCServerApp(**kwargs) | app = RPCServerApp(**kwargs) | ||||
app.router.add_route('GET', '/', index) | app.router.add_route('GET', '/', index) | ||||
app.router.add_route('GET', '/graph/stats', stats) | app.router.add_route('GET', '/graph/stats', stats) | ||||
app.router.add_route('GET', '/graph/leaves/{src}', | app.router.add_route('GET', '/graph/leaves/{src}', | ||||
get_simple_traversal_handler('leaves')) | get_simple_traversal_handler('leaves')) | ||||
app.router.add_route('GET', '/graph/neighbors/{src}', | app.router.add_route('GET', '/graph/neighbors/{src}', | ||||
get_simple_traversal_handler('neighbors')) | get_simple_traversal_handler('neighbors')) | ||||
app.router.add_route('GET', '/graph/visit/nodes/{src}', | app.router.add_route('GET', '/graph/visit/nodes/{src}', | ||||
get_simple_traversal_handler('visit_nodes')) | get_simple_traversal_handler('visit_nodes')) | ||||
app.router.add_route('GET', '/graph/visit/paths/{src}', visit_paths) | app.router.add_route('GET', '/graph/visit/paths/{src}', visit_paths) | ||||
app.router.add_route('GET', '/graph/walk/{src}/{dst}', walk) | app.router.add_route('GET', '/graph/walk/{src}/{dst}', walk) | ||||
app.router.add_route('GET', '/graph/neighbors/count/{src}', | |||||
get_count_handler('neighbors')) | |||||
app.router.add_route('GET', '/graph/leaves/count/{src}', | |||||
get_count_handler('leaves')) | |||||
app.router.add_route('GET', '/graph/visit/nodes/count/{src}', | |||||
get_count_handler('visit_nodes')) | |||||
app['backend'] = backend | app['backend'] = backend | ||||
return app | return app |