@fnlb-project/stanza
Version:
Modern XMPP in the browser, with a JSON API
71 lines (70 loc) • 2.22 kB
JavaScript
// ====================================================================
// XEP-0084: User Avatar
// --------------------------------------------------------------------
// Source: https://xmpp.org/extensions/xep-0084.html
// Version: 1.1.1 (2016-07-09)
// ====================================================================
import { attribute, integerAttribute, pubsubItemContentAliases, textBuffer } from '../jxt';
import { NS_AVATAR_DATA, NS_AVATAR_METADATA } from '../Namespaces';
const Protocol = [
{
aliases: pubsubItemContentAliases(),
element: 'data',
fields: {
data: textBuffer('base64')
},
namespace: NS_AVATAR_DATA,
path: 'avatar',
type: NS_AVATAR_DATA,
typeField: 'itemType'
},
{
aliases: [{ path: 'avatar', impliedType: true }, ...pubsubItemContentAliases()],
element: 'metadata',
namespace: NS_AVATAR_METADATA,
type: NS_AVATAR_METADATA,
typeField: 'itemType',
childrenExportOrder: {
versions: 1,
pointers: 2
}
},
{
aliases: [
{
multiple: true,
path: 'avatar.versions',
selector: NS_AVATAR_METADATA
}
],
element: 'info',
fields: {
bytes: integerAttribute('bytes'),
height: integerAttribute('height'),
id: attribute('id'),
mediaType: attribute('type'),
uri: attribute('url'),
width: integerAttribute('width')
},
namespace: NS_AVATAR_METADATA
},
{
aliases: [
{
multiple: true,
path: 'avatar.pointers',
selector: NS_AVATAR_METADATA
}
],
element: 'pointer',
fields: {
bytes: integerAttribute('bytes'),
height: integerAttribute('height'),
id: attribute('id'),
mediaType: attribute('type'),
width: integerAttribute('width')
},
namespace: NS_AVATAR_METADATA
}
];
export default Protocol;