Beispiel #1
0
class LocateV2Schema(BaseLocateSchema):

    carrier = InternalSchemaNode(colander.String(), missing=None)
    considerIp = InternalSchemaNode(colander.Boolean(), missing=True)
    homeMobileCountryCode = InternalSchemaNode(colander.Integer(),
                                               missing=None)
    homeMobileNetworkCode = InternalSchemaNode(colander.Integer(),
                                               missing=None)
    radioType = InternalSchemaNode(colander.String(),
                                   validator=colander.OneOf(RADIO_STRINGS),
                                   missing=colander.drop,
                                   internal_name='radio')

    cellTowers = CellTowersSchema(missing=(), internal_name='cell')
    wifiAccessPoints = WifiAccessPointsSchema(missing=(), internal_name='wifi')
    fallbacks = FallbackSchema(missing=None)

    def __init__(self, *args, **kw):
        super(LocateV2Schema, self).__init__(*args, **kw)
        self.fallback_defaults = self.get('fallbacks').deserialize({})

    def deserialize(self, data):
        data = super(LocateV2Schema, self).deserialize(data)
        if data['fallbacks'] is None:
            data['fallbacks'] = dict(self.fallback_defaults)
            data['fallbacks']['ipf'] = data['considerIp']
        return data
Beispiel #2
0
    class SequenceItem(InternalMappingSchema):

        # radio is a FxOS specific undocumented workaround
        radio = InternalSchemaNode(colander.String(),
                                   validator=colander.OneOf(RADIO_STRINGS),
                                   missing=colander.drop)
        # radioType resolves to the internal field 'radio', so if both
        # 'radio' and 'radioType' are provided, radioType should take
        # precedence. colander respects the order that fields are defined
        # and so radioType is defined after the 'radio' field.
        radioType = InternalSchemaNode(colander.String(),
                                       validator=colander.OneOf(RADIO_STRINGS),
                                       missing=colander.drop,
                                       internal_name='radio')
        mobileCountryCode = InternalSchemaNode(colander.Integer(),
                                               missing=None,
                                               internal_name='mcc')
        mobileNetworkCode = InternalSchemaNode(colander.Integer(),
                                               missing=None,
                                               internal_name='mnc')
        locationAreaCode = InternalSchemaNode(colander.Integer(),
                                              missing=None,
                                              internal_name='lac')
        cellId = InternalSchemaNode(colander.Integer(),
                                    missing=None,
                                    internal_name='cid')

        age = InternalSchemaNode(colander.Integer(), missing=None)
        psc = InternalSchemaNode(colander.Integer(), missing=None)
        signalStrength = InternalSchemaNode(colander.Integer(),
                                            missing=None,
                                            internal_name='signal')
        timingAdvance = InternalSchemaNode(colander.Integer(),
                                           missing=None,
                                           internal_name='ta')
Beispiel #3
0
        class SampleSchema(MappingSchema):
            schema_type = InternalMapping

            input_name = InternalSchemaNode(String(),
                                            internal_name='output_name')

            def __init__(self, *args, **kwargs):
                super(SampleSchema, self).__init__(*args, **kwargs)
Beispiel #4
0
class LocateV1Schema(BaseLocateSchema):

    radio = InternalSchemaNode(
        colander.String(),
        validator=colander.OneOf(RADIO_STRINGS), missing=None)
    cell = CellsSchema(missing=())
    wifi = WifisSchema(missing=())
    fallbacks = FallbackSchema(missing=None)
Beispiel #5
0
    class SequenceItem(InternalMappingSchema):

        radio = InternalSchemaNode(
            colander.String(),
            validator=colander.OneOf(RADIO_STRINGS), missing=None)
        mcc = InternalSchemaNode(colander.Integer(), missing=None)
        mnc = InternalSchemaNode(colander.Integer(), missing=None)
        lac = InternalSchemaNode(colander.Integer(), missing=None)
        cid = InternalSchemaNode(colander.Integer(), missing=None)

        asu = InternalSchemaNode(colander.Integer(), missing=None)
        psc = InternalSchemaNode(colander.Integer(), missing=None)
        signal = InternalSchemaNode(colander.Integer(), missing=None)
        ta = InternalSchemaNode(colander.Integer(), missing=None)
Beispiel #6
0
    class SequenceItem(InternalMappingSchema):

        key = InternalSchemaNode(
            colander.String(), missing=None, internal_name='mac')
        frequency = InternalSchemaNode(colander.Integer(), missing=None)
        channel = InternalSchemaNode(colander.Integer(), missing=None)
        signal = InternalSchemaNode(colander.Integer(), missing=None)
        signalToNoiseRatio = InternalSchemaNode(
            colander.Integer(), missing=None, internal_name='snr')
        ssid = InternalSchemaNode(colander.String(), missing=None)
Beispiel #7
0
class ResultSchema(InternalMappingSchema):
    @colander.instantiate()
    class location(InternalMappingSchema):  # NOQA

        lat = InternalSchemaNode(BoundedFloat())
        lng = InternalSchemaNode(BoundedFloat(), internal_name='lon')

    accuracy = InternalSchemaNode(colander.Float())
    fallback = OptionalNode(colander.String(), missing=None)

    def deserialize(self, data):
        data = super(ResultSchema, self).deserialize(data)
        fallback = data.get('fallback', None)
        if fallback != 'lacf':
            fallback = None
        return {
            'accuracy': data['accuracy'],
            'fallback': fallback,
            'lat': data['location']['lat'],
            'lon': data['location']['lon'],
        }
Beispiel #8
0
    class location(InternalMappingSchema):  # NOQA

        lat = InternalSchemaNode(BoundedFloat())
        lng = InternalSchemaNode(BoundedFloat(), internal_name='lon')