process_message()   A
last analyzed

Complexity

Conditions 2

Size

Total Lines 15

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 7
CRAP Score 2

Importance

Changes 0
Metric Value
dl 0
loc 15
ccs 7
cts 7
cp 1
rs 9.4285
c 0
b 0
f 0
cc 2
crap 2
1
# -*- coding: utf-8 -*-
2 15
from __future__ import absolute_import, unicode_literals
3
4 15
import xmltodict
5 15
from werobot.messages.messages import MessageMetaClass, UnknownMessage
6 15
from werobot.messages.events import EventMetaClass, UnknownEvent
7
8
9 15
def parse_user_msg(xml):
10 15
    message = process_message(parse_xml(xml)) if xml else None
11 15
    return message
12
13
14 15
def parse_xml(text):
15 15
    xml_dict = xmltodict.parse(text)["xml"]
16 15
    xml_dict["raw"] = text
17 15
    return xml_dict
18
19
20 15
def process_message(message):
21
    """
22
    Process a message dict and return a Message Object
23
    :param message: Message dict returned by `parse_xml` function
24
    :return: Message Object
25
    """
26 15
    message["type"] = message.pop("MsgType").lower()
27 15
    if message["type"] == 'event':
28 15
        message["type"] = str(message.pop("Event")).lower() + '_event'
29 15
        message_type = EventMetaClass.TYPES.get(message["type"], UnknownEvent)
30
    else:
31 15
        message_type = MessageMetaClass.TYPES.get(
32 15
            message["type"], UnknownMessage
33
        )
34
    return message_type(message)
35