Adding new encoding formats
Encoders are necessary to support new encoding formats. The definition
of an Encoder must follows the general architecture described in the
Developer
guide.
In a nutshell, each Encoder is expected to serialize OpenC2
messages. The translation between Python objects and dictionaries is
already provided by the base Encoder class (by the
Encoder.todict() and Encoder.fromdict() methods, which new
Encoders are expected to extend.
The definition of a new Encoder must provide: - a method encode
for serializing OpenC2 commands; - a method decode for deserializing
OpenC2 messages; - a class member encoder_type with the name of the
Encoder; - registration of the new Encoder via the
@register_encoder decorator.
@register_encoder
class MyEncoder(Encoder):
encoder_type = 'json'
@staticmethod
def encode(obj):
(dic = Encoder.todict(obj) )
...
@staticmethod
def decode(msg, msgtype=None):
...
( return Encoder.fromdict(msgtype, msg) )
Remeber to import every new Encoder in __init__.py that you want to make available to the system.
See the Developer
guide
for more detail about the base Encoder class and the available
Encoders.