Fdans has uploaded a new change for review. ( https://gerrit.wikimedia.org/r/333641 )
Change subject: Changes UA string to JSON map ...................................................................... Changes UA string to JSON map Uses ua_parser to generate a JSON object with properties obtained from the user agent string. The capsule schema remains unchanged. Bug: T153207 Change-Id: Iafaeb82e52715d853cf3e68a69969c0bf1e209eb --- M eventlogging/parse.py M eventlogging/utils.py M tests/test_parser.py 3 files changed, 31 insertions(+), 2 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/eventlogging refs/changes/41/333641/1 diff --git a/eventlogging/parse.py b/eventlogging/parse.py index 98bf758..8e9b1ac 100644 --- a/eventlogging/parse.py +++ b/eventlogging/parse.py @@ -42,6 +42,7 @@ from .compat import json, unquote_plus, uuid5 from .event import Event +from .utils import parse_ua __all__ = ( 'LogParser', 'ncsa_to_unix', @@ -155,6 +156,7 @@ event = {k: f(match.group(k)) for f, k in caster_key_pairs} event.update(event.pop('capsule')) event['uuid'] = capsule_uuid(event) + event = parse_ua(event) return Event(event) def __repr__(self): diff --git a/eventlogging/utils.py b/eventlogging/utils.py index a0cfa62..ba53503 100644 --- a/eventlogging/utils.py +++ b/eventlogging/utils.py @@ -20,6 +20,7 @@ import threading import traceback import uuid +from ua_parser import user_agent_parser from .compat import ( items, monotonic_clock, urisplit, urlencode, parse_qsl, @@ -291,3 +292,10 @@ # Set module logging level to INFO, DEBUG is too noisy. logging.getLogger("kafka").setLevel(logging.INFO) logging.getLogger("kazoo").setLevel(logging.INFO) + +def parse_ua(event): + if 'userAgent' in event: + parsed_ua = user_agent_parser.Parse(event['userAgent']) + event['userAgent'] = parsed_ua + parsed_ua.pop('string') + return event diff --git a/tests/test_parser.py b/tests/test_parser.py index 8d0c117..d4ac7e3 100644 --- a/tests/test_parser.py +++ b/tests/test_parser.py @@ -39,7 +39,7 @@ '2%3A1%2C%22articleTitle%22%3A%22H%C3%A9ctor%20Elizondo%22%7' 'D%2C%22webHost%22%3A%22test.wikipedia.org%22%7D; cp3022.esa' 'ms.wikimedia.org 132073 2013-01-19T23:16:38 - ' - 'Mozilla/5.0') + 'Mozilla/5.0 (X11; Linux x86_64; rv:10.0) Gecko/20100101 Firefox/10.0') parsed = { 'uuid': '799341a01ba957c79b15dc4d2d950864', 'recvFrom': 'cp3022.esams.wikimedia.org', @@ -49,7 +49,26 @@ 'timestamp': 1358637398, 'schema': 'Generic', 'revision': 13, - 'userAgent': 'Mozilla/5.0', + 'userAgent': { + 'device': { + 'brand': None, + 'model': None, + 'family': 'Other' + }, + 'os': { + 'major': None, + 'patch_minor': None, + 'minor': None, + 'family': 'Linux', + 'patch': None + }, + 'user_agent': { + 'major': '10', + 'minor': '0', + 'family': 'Firefox', + 'patch': None + } + }, 'event': { 'articleTitle': 'Héctor Elizondo', 'articleId': 1 -- To view, visit https://gerrit.wikimedia.org/r/333641 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Iafaeb82e52715d853cf3e68a69969c0bf1e209eb Gerrit-PatchSet: 1 Gerrit-Project: eventlogging Gerrit-Branch: master Gerrit-Owner: Fdans <fd...@wikimedia.org> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits