Example #1
0
    def serialize(self, dataframe: DataFrame):
        """

        :param data: defined in terkin/model.py

        moves & reformats data from dataframe.data_out to dataframe.payload_out

        """

        # Serialize payload.
        if self.format == TelemetryClient.FORMAT_URLENCODED:
            payload = urlencode(dataframe.data_out)

        elif self.format == TelemetryClient.FORMAT_JSON:
            payload = json.dumps(dataframe.data_out)

        elif self.format == TelemetryClient.FORMAT_CAYENNELPP:
            payload = to_cayenne_lpp(dataframe)

        elif self.format == TelemetryClient.FORMAT_CSV:
            raise NotImplementedError(
                'Serialization format "CSV" not implemented yet')

        else:
            raise ValueError('Unknown serialization format "{}"'.format(
                self.format))

        # Apply content encoding.
        if self.content_encoding in (None, self.CONTENT_ENCODING_IDENTITY):
            pass

        elif self.content_encoding == self.CONTENT_ENCODING_BASE64:
            payload = to_base64(payload)

        dataframe.payload_out = payload
Example #2
0
    def serialize(self, data):

        # Serialize payload.
        if self.format == TelemetryClient.FORMAT_URLENCODED:
            payload = urlencode(data)

        elif self.format == TelemetryClient.FORMAT_JSON:
            payload = json.dumps(data)

        elif self.format == TelemetryClient.FORMAT_CAYENNELPP:
            payload = to_cayenne_lpp(data)

        elif self.format == TelemetryClient.FORMAT_CSV:
            raise NotImplementedError(
                'Serialization format "CSV" not implemented yet')

        else:
            raise ValueError('Unknown serialization format "{}"'.format(
                self.format))

        # Apply content encoding.
        if self.content_encoding in (None, self.CONTENT_ENCODING_IDENTITY):
            pass

        elif self.content_encoding == self.CONTENT_ENCODING_BASE64:
            payload = to_base64(payload)

        return payload