コード例 #1
0
    FORMAT = '>6s'

    def encode(self, is_originating, uri, args=None, kwargs=None):
        # Autobahn wants to send custom payload: convert to an instance
        # of EncodedPayload
        payload = struct.pack(self.FORMAT, args[0])
        return EncodedPayload(payload, u'mqtt')

    def decode(self, is_originating, uri, encoded_payload):
        # Autobahn has received a custom payload.
        # convert it into a tuple: (uri, args, kwargs)
        return uri, struct.unpack(self.FORMAT, encoded_payload.payload), None


# we need to register our codec!
IPayloadCodec.register(CodecMqtt)


class MySession(ApplicationSession):
    def __init__(self, config):
        ApplicationSession.__init__(self, config)
        self.init()

    def init(self):
        self.mensagem = b'default'

    @inlineCallbacks
    def onJoin(self, details):
        self.log.info('session joined: {details}', details=details)

        # this is the one and only line of code that is different from a regular
コード例 #2
0
ファイル: cryptobox.py プロジェクト: pk400/astraea.systems
            """
            assert (type(uri) == six.text_type)
            assert (isinstance(encoded_payload, EncodedPayload))
            assert (encoded_payload.enc_algo == u'cryptobox')

            box = self._get_box(is_originating, uri)

            if not box:
                raise Exception(
                    "received encrypted payload, but can't find key!")

            payload_ser = box.decrypt(encoded_payload.payload,
                                      encoder=RawEncoder)

            if encoded_payload.enc_serializer != u'json':
                raise Exception(
                    "received encrypted payload, but don't know how to process serializer '{}'"
                    .format(encoded_payload.enc_serializer))

            payload = _json_loads(payload_ser.decode('utf8'))

            uri = payload.get(u'uri', None)
            args = payload.get(u'args', None)
            kwargs = payload.get(u'kwargs', None)

            return uri, args, kwargs

    # A WAMP-cryptobox keyring can work as a codec for
    # payload transparency
    IPayloadCodec.register(KeyRing)
コード例 #3
0
ファイル: cryptobox.py プロジェクト: potens1/autobahn-python
        @public
        def decode(self, is_originating, uri, encoded_payload):
            """
            Decrypt the given WAMP URI and EncodedPayload into a tuple ``(uri, args, kwargs)``.
            """
            assert(type(uri) == six.text_type)
            assert(isinstance(encoded_payload, EncodedPayload))
            assert(encoded_payload.enc_algo == u'cryptobox')

            box = self._get_box(is_originating, uri)

            if not box:
                raise Exception("received encrypted payload, but can't find key!")

            payload_ser = box.decrypt(encoded_payload.payload, encoder=RawEncoder)

            if encoded_payload.enc_serializer != u'json':
                raise Exception("received encrypted payload, but don't know how to process serializer '{}'".format(encoded_payload.enc_serializer))

            payload = _json_loads(payload_ser.decode('utf8'))

            uri = payload.get(u'uri', None)
            args = payload.get(u'args', None)
            kwargs = payload.get(u'kwargs', None)

            return uri, args, kwargs

    # A WAMP-cryptobox keyring can work as a codec for
    # payload transparency
    IPayloadCodec.register(KeyRing)
コード例 #4
0
    FORMAT = '>Hl8s'

    def encode(self, is_originating, uri, args=None, kwargs=None):
        # Autobahn wants to send custom payload: convert to an instance
        # of EncodedPayload
        payload = struct.pack(self.FORMAT, args[0], args[1], args[2])
        return EncodedPayload(payload, u'mqtt')

    def decode(self, is_originating, uri, encoded_payload):
        # Autobahn has received a custom payload.
        # convert it into a tuple: (uri, args, kwargs)
        return uri, struct.unpack(self.FORMAT, encoded_payload.payload), None


# we need to register our codec!
IPayloadCodec.register(MyCodec)


class MySession(ApplicationSession):
    @inlineCallbacks
    def onJoin(self, details):
        self.log.info('session joined: {details}', details=details)

        # this is the one and only line of code that is different from a regular
        # WAMP app session: we set our codec, and everything else is transparent (!)
        self.set_payload_codec(MyCodec())

        def on_event(pid, seq, ran, details=None):
            self.log.info(
                'event received on topic {topic}: pid={pid}, seq={seq}, ran={ran}, details={details}\n',
                topic=TOPIC,
コード例 #5
0
ファイル: autobahn.py プロジェクト: claashk/vzclient
        self.with_timestamp = with_timestamp

    def encode(self, is_originating, uri, args=None, kwargs=None):
        # Autobahn wants to send custom payload: convert to an instance
        # of EncodedPayload
        if self.with_timestamp:
            kwargs['value'] = kwargs.pop('reading', -1.)
            payload = json.dumps(kwargs).encode()
        else:
            payload = str(kwargs.get('reading', -1.)).encode()
        return EncodedPayload(payload, u'mqtt')

    def decode(self, is_originating, uri, encoded_payload):
        # Autobahn has received a custom payload.
        # convert it into a tuple: (uri, args, kwargs)
        if self.with_timestamp:
            kwargs = json.loads(encoded_payload.payload.decode())
            kwargs['reading'] = kwargs.pop('value', -1.)
            kwargs['uri'] = uri
            kwargs.setdefault('timestamp')
        else:
            kwargs = dict(reading=float(encoded_payload.payload),
                          uri=uri,
                          timestamp=None)
        return uri, [], kwargs


# we need to register our codec!
IPayloadCodec.register(VzLoggerCodec)

コード例 #6
0
    def decode(self, is_originating, uri, encoded_payload):
        # Autobahn has received a custom payload.
        # convert it into a tuple: (uri, args, kwargs)
        if encoded_payload.enc_algo != ENC_ALGO:
            raise SerializationError(
                u'Unrecognized payload encoding algorithm: %s' %
                encoded_payload.enc_algo)

        args, kwargs = cbor2.loads(encoded_payload.payload,
                                   tag_hook=tag_decoder)
        return uri, args, kwargs


# we need to register our codec!
IPayloadCodec.register(CBORCodec)


class MySession(ApplicationSession):
    @inlineCallbacks
    def onJoin(self, details):
        self.log.info('session joined: {details}', details=details)

        # this is the one and only line of code that is different from a regular
        # WAMP app session: we set our codec, and everything else is transparent (!)
        self.set_payload_codec(CBORCodec())

        def on_event(company):
            self.log.info('received company event: {company}', company=company)

            # Check that the cyclic references have been restored