diff --git a/db/mycroft/metrics_schema/tables/api.sql b/db/mycroft/metrics_schema/tables/api.sql index f283d0e7..a7ca3d59 100644 --- a/db/mycroft/metrics_schema/tables/api.sql +++ b/db/mycroft/metrics_schema/tables/api.sql @@ -8,5 +8,6 @@ CREATE TABLE metrics.api ( duration INTEGER NOT NULL, http_status CHAR(3) NOT NULL, account_id uuid, + device_id uuid, UNIQUE (url, access_ts) ) diff --git a/shared/selene/api/blueprint.py b/shared/selene/api/blueprint.py index f0e43fe5..37fd13d3 100644 --- a/shared/selene/api/blueprint.py +++ b/shared/selene/api/blueprint.py @@ -62,13 +62,19 @@ def add_api_metric(http_status): else: account_id = None + if 'device_id' in global_context: + device_id = global_context.device_id + else: + device_id = None + api_metric = ApiMetric( - url=global_context.url, access_ts=datetime.utcnow(), - api=api, - duration=(datetime.utcnow() - global_context.start_ts).microseconds, account_id=account_id, - http_status=int(http_status) + api=api, + device_id=device_id, + duration=(datetime.utcnow() - global_context.start_ts).microseconds, + http_status=int(http_status), + url=global_context.url ) metric_repository = ApiMetricsRepository(global_context.db) metric_repository.add(api_metric) diff --git a/shared/selene/api/public_endpoint.py b/shared/selene/api/public_endpoint.py index 9b2dcfe2..60c1aa29 100644 --- a/shared/selene/api/public_endpoint.py +++ b/shared/selene/api/public_endpoint.py @@ -109,8 +109,9 @@ class PublicEndpoint(MethodView): if session is not None: if device_id is not None: session = json.loads(session) - uuid = session['uuid'] - device_authenticated = (device_id == uuid) + device_uuid = session['uuid'] + global_context.device_id = device_uuid + device_authenticated = (device_id == device_uuid) else: device_authenticated = True if not device_authenticated: