56 lines
1.9 KiB
ReStructuredText
56 lines
1.9 KiB
ReStructuredText
Extended encoding
|
|
=================
|
|
|
|
Extended encoding is an attempt to create a standard for transmitting structured
|
|
data. The goals are flexibility, wide platform support and extensibility. It is
|
|
currently available in the v0.6 branch and can be enabled by holding "Shift"
|
|
while clicking on Send. It is planned that v5 addresses will have to support
|
|
this. It's a work in progress, the basic plain text message works but don't
|
|
expect anthing else at this time.
|
|
|
|
The data structure is in msgpack, then compressed with zlib. The top level is
|
|
a key/value store, and the "" key (empty string) contains the value of the type
|
|
of object, which can then have its individual format and standards.
|
|
|
|
Text fields are encoded using UTF-8.
|
|
|
|
Types
|
|
-----
|
|
|
|
You can find the implementations in the ``src/messagetypes`` directory of
|
|
PyBitmessage. Each type has its own file which includes one class, and they are
|
|
dynamically loaded on startup. It's planned that this will also contain
|
|
initialisation, rendering and so on, so that developers can simply add a new
|
|
object type by adding a single file in the messagetypes directory and not have
|
|
to change any other part of the code.
|
|
|
|
message
|
|
^^^^^^^
|
|
|
|
The replacement for the old messages. Mandatory keys are ``body`` and
|
|
``subject``, others are currently not implemented and not mandatory. Proposed
|
|
other keys:
|
|
|
|
``parents``:
|
|
array of msgids referring to messages that logically precede it in a
|
|
conversation. Allows to create a threaded conversation view
|
|
|
|
``files``:
|
|
array of files (which is a key/value pair):
|
|
|
|
``name``:
|
|
file name, mandatory
|
|
``data``:
|
|
the binary data of the file
|
|
``type``:
|
|
MIME content type
|
|
``disposition``:
|
|
MIME content disposition, possible values are "inline" and "attachment"
|
|
|
|
vote
|
|
^^^^
|
|
|
|
Dummy code available in the repository. Supposed to serve voting in a chan
|
|
(thumbs up/down) for decentralised moderation. Does not actually do anything at
|
|
the moment and specification can change.
|