def transparent(request: web.Request): response = yield from aiohttp.request( request.method, "%s://%s%s" % (request.scheme, request.session.endpoint.address, request.path), headers=request.headers, data=(yield from request.read()) ) return web.Response( status=response.status, headers=response.headers, body=(yield from response.read_and_close()) )
def start_session(request: web.Request): session = request.session session.endpoint = AndroidEndpoint() try: yield from session.endpoint.start(session.desired_capabilities) headers = {k: v for k, v in request.headers.items() if k != hdrs.HOST} response = yield from aiohttp.request( request.method, "%s://%s%s" % (request.scheme, session.endpoint.address, request.path), headers=headers, data=(yield from request.read()) ) if response.status == 200: body = yield from response.json() session.session_id = session.remote_session_id = body.get('sessionId') else: session.close() except: session.close() raise return response