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

Reply via email to