From fa7105e64c4009093e678dfd43b85e7e03efdb42 Mon Sep 17 00:00:00 2001 From: Kraiem Taha Yassine Date: Fri, 2 Jul 2021 19:38:01 +0200 Subject: [PATCH] Api assist (#71) * feat(api): assist peerJS server * feat(api): install assist_server dependencies and start it with the API * feat(api): assist: list live sessions * feat(nginx): expose assist_server and block peers listing * feat(api): merged sourcemaps reader and assist-server feat(api): change image definition feat(api): changed service start command feat(utilities): created full server & image definition feat(nginx): reset chalice configuration * feat(utilities): utilities.yaml * feat(nginx): utilities URL * feat(utilities): utilities template * feat(ci): Adding utilities GH action. Signed-off-by: Rajesh Rajendran * feat(utilities): build script * feat(utilities): build script fix image name * feat(utilities): tag and push image as latest * feat(api): tag and push image as latest * feat(api): extract peers host * feat(api): fixed utilities URL * feat(api): assist logs * feat(api): assist: fixed peerjs URL * feat(api): log peers URL * feat(api): assit: get all durations, even if it is not null * feat(api): assit: include peerId in response * feat(api): return project_key with session's details * feat(assist): fix peerJS error * feat(api): fix typo * feat(api): assist: return live flag with session details Co-authored-by: Rajesh Rajendran --- api/chalicelib/core/assist.py | 14 +++++++++++++- api/chalicelib/core/sessions.py | 4 +++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/api/chalicelib/core/assist.py b/api/chalicelib/core/assist.py index be5431990..2e17bd516 100644 --- a/api/chalicelib/core/assist.py +++ b/api/chalicelib/core/assist.py @@ -37,7 +37,19 @@ def get_live_sessions(project_id): FROM public.sessions AS s WHERE s.project_id = %(project_id)s AND session_id IN %(connected_peers)s;""", - {"project_id": project_id, "connected_peers": connected_peers, "project_key":project_key}) + {"project_id": project_id, "connected_peers": connected_peers, "project_key": project_key}) cur.execute(query) results = cur.fetchall() return helper.list_to_camel_case(results) + + +def is_live(project_id, session_id, project_key=None): + if project_key is None: + project_key = projects.get_project_key(project_id) + connected_peers = requests.get(environ["peers"] + f"/{project_key}") + if connected_peers.status_code != 200: + print("!! issue with the peer-server") + print(connected_peers.text) + return False + connected_peers = connected_peers.json().get("data", []) + return session_id in connected_peers diff --git a/api/chalicelib/core/sessions.py b/api/chalicelib/core/sessions.py index 64004e7a0..6dc0edc29 100644 --- a/api/chalicelib/core/sessions.py +++ b/api/chalicelib/core/sessions.py @@ -1,6 +1,6 @@ from chalicelib.utils import pg_client, helper, dev from chalicelib.core import events, sessions_metas, socket_ios, metadata, events_ios, \ - sessions_mobs, issues, projects, errors, resources + sessions_mobs, issues, projects, errors, resources, assist SESSION_PROJECTION_COLS = """s.project_id, s.session_id::text AS session_id, @@ -100,6 +100,8 @@ def get_by_id2_pg(project_id, session_id, user_id, full_data=False, include_fav_ data['metadata'] = __group_metadata(project_metadata=data.pop("projectMetadata"), session=data) data['issues'] = issues.get_by_session_id(session_id=session_id) + data['live'] = assist.is_live(project_id=project_id, session_id=session_id, + project_key=data["projectKey"]) return data return None