Exemple #1
0
class ReportSchema(OptionalMappingSchema):

    carrier = OptionalStringNode()
    homeMobileCountryCode = OptionalIntNode()
    homeMobileNetworkCode = OptionalIntNode()
    radioType = OptionalStringVocabularyNode(vocabulary=RADIO_STRINGS)
    timestamp = OptionalNode(UnixTimeFromInteger())

    bluetoothBeacons = BluetoothBeaconsSchema(missing=())
    wifiAccessPoints = WifiAccessPointsSchema(missing=())

    def deserialize(self, data):
        data = super(ReportSchema, self).deserialize(data)
        if (data is colander.drop
                or data is colander.null):  # pragma: no cover
            return colander.drop

        if not (data.get('bluetoothBeacons') or data.get('cellTowers')
                or data.get('wifiAccessPoints')):
            return colander.drop

        top_radio = data.get('radioType', None)
        for cell in data.get('cellTowers', ()):
            if top_radio and ('radioType' not in cell
                              or not cell['radioType']):
                cell['radioType'] = top_radio
            if cell.get('radioType') == 'umts':
                cell['radioType'] = 'wcdma'

        if 'radioType' in data:
            del data['radioType']

        return data
Exemple #2
0
class ReportSchema(OptionalMappingSchema):

    carrier = OptionalStringNode()
    homeMobileCountryCode = OptionalIntNode()
    homeMobileNetworkCode = OptionalIntNode()
    radioType = OptionalStringVocabularyNode(vocabulary=RADIO_STRINGS)
    timestamp = OptionalNode(UnixTimeFromInteger())

    bluetoothBeacons = BluetoothBeaconsSchema(missing=())
    wifiAccessPoints = WifiAccessPointsSchema(missing=())

    def deserialize(self, data):
        data = super(ReportSchema, self).deserialize(data)
        if data is colander.drop or data is colander.null:
            return colander.drop

        if not (
            data.get("bluetoothBeacons")
            or data.get("cellTowers")
            or data.get("wifiAccessPoints")
        ):
            return colander.drop

        top_radio = data.get("radioType", None)
        for cell in data.get("cellTowers", ()):
            if top_radio and ("radioType" not in cell or not cell["radioType"]):
                cell["radioType"] = top_radio
            if cell.get("radioType") == "umts":
                cell["radioType"] = "wcdma"

        if "radioType" in data:
            del data["radioType"]

        return data
Exemple #3
0
class BaseReportV0Schema(OptionalMappingSchema):

    lat = OptionalBoundedFloatNode(to_name="latitude")
    lon = OptionalBoundedFloatNode(to_name="longitude")

    time = OptionalNode(UnixTimeFromString(), to_name="timestamp")
    accuracy = OptionalBoundedFloatNode()
    age = OptionalIntNode()
    altitude = OptionalBoundedFloatNode()
    altitude_accuracy = OptionalBoundedFloatNode(to_name="altitudeAccuracy")
    heading = OptionalBoundedFloatNode()
    pressure = OptionalBoundedFloatNode()
    radio = OptionalStringVocabularyNode(vocabulary=RADIO_STRINGS,
                                         to_name="radioType")
    speed = OptionalBoundedFloatNode()
    source = OptionalStringVocabularyNode(
        vocabulary=SOURCE_STRINGS, validator=colander.OneOf(SOURCE_STRINGS))
Exemple #4
0
class PositionSchema(OptionalMappingSchema):

    latitude = OptionalBoundedFloatNode()
    longitude = OptionalBoundedFloatNode()

    accuracy = OptionalBoundedFloatNode()
    age = OptionalIntNode()
    altitude = OptionalBoundedFloatNode()
    altitudeAccuracy = OptionalBoundedFloatNode()
    heading = OptionalBoundedFloatNode()
    pressure = OptionalBoundedFloatNode()
    speed = OptionalBoundedFloatNode()
    source = OptionalStringVocabularyNode(vocabulary=SOURCE_STRINGS)
Exemple #5
0
class CellTowerSchema(OptionalMappingSchema):

    radioType = OptionalStringVocabularyNode(vocabulary=RADIO_STRINGS)
    mobileCountryCode = OptionalIntNode()
    mobileNetworkCode = OptionalIntNode()
    locationAreaCode = OptionalIntNode()
    cellId = OptionalIntNode()

    age = OptionalIntNode()
    asu = OptionalIntNode()
    serving = OptionalIntNode()
    signalStrength = OptionalIntNode()
    timingAdvance = OptionalIntNode()
Exemple #6
0
class CellV0Schema(OptionalMappingSchema):

    radio = OptionalStringVocabularyNode(vocabulary=RADIO_STRINGS,
                                         to_name="radioType")
    mcc = OptionalIntNode(to_name="mobileCountryCode")
    mnc = OptionalIntNode(to_name="mobileNetworkCode")
    lac = OptionalIntNode(to_name="locationAreaCode")
    cid = OptionalIntNode(to_name="cellId")

    age = OptionalIntNode()
    asu = OptionalIntNode()
    psc = OptionalIntNode(to_name="primaryScramblingCode")
    serving = OptionalIntNode()
    signal = OptionalIntNode(to_name="signalStrength")
    ta = OptionalIntNode(to_name="timingAdvance")