Example #1
0
module.exports = function (registry) {
    var Properties = {
        get: function () {
            var results = {};
            var props = jxt.find(this.xml, NS, 'Property');
    
            for (var i = 0, len = props.length; i < len; i++) {
                var property = props[i];
                var type = jxt.getAttribute(property, 'type');
                results[type] = property.textContent;
            }
    
            return results;
        }
    };
    
    var XRD = registry.define({
        name: 'xrd',
        namespace: NS,
        element: 'XRD',
        fields: {
            subject: jxt.subText(NS, 'Subject'),
            expires: jxt.dateSub(NS, 'Expires'),
            aliases: jxt.multiSubText(NS, 'Alias'),
            properties: Properties
        }
    });
    
    
    var Link = registry.define({
        name: '_xrdlink',
        namespace: NS,
        element: 'Link',
        fields: {
            rel: jxt.attribute('rel'),
            href: jxt.attribute('href'),
            type: jxt.attribute('type'),
            template: jxt.attribute('template'),
            titles: jxt.subLangText(NS, 'Title', 'default'),
            properties: Properties
        }
    });
    
    registry.extend(XRD, Link, 'links');

    return XRD;
};
Example #2
0
            set: function (value) {
                var force = (value === '');
                stanza.setAttribute(this.xml, 'ver', value, force);
            }
        }
    }
});

var RosterItem = stanza.define({
    name: '_rosterItem',
    namespace: NS,
    element: 'item',
    fields: {
        jid: jxtutil.jidAttribute('jid', true),
        name: stanza.attribute('name'),
        subscription: stanza.attribute('subscription', 'none'),
        subscriptionRequested: {
            get: function () {
                var ask = stanza.getAttribute(this.xml, 'ask');
                return ask === 'subscribe';
            }
        },
        preApproved: stanza.boolAttribute(NS, 'approved'),
        groups: stanza.multiSubText(NS, 'group')
    }
});


stanza.extend(Iq, Roster);
stanza.extend(Roster, RosterItem, 'items');
Example #3
0
"use strict";

var _ = require('underscore');
var stanza = require('jxt');
var util = require('./util');
var Message = require('./message');


exports.DataForm = stanza.define({
    name: 'form',
    namespace: 'jabber:x:data',
    element: 'x',
    fields: {
        title: stanza.subText('jabber:x:data', 'title'),
        instructions: stanza.multiSubText('jabber:x:data', 'instructions'),
        type: stanza.attribute('type', 'form')
    }
});

exports.Field = stanza.define({
    name: 'field',
    namespace: 'jabber:x:data',
    element: 'field',
    init: function (data) {
        this._type = data.type || this.type;
    },
    fields: {
        type: {
            get: function () {
                return stanza.getAttribute(this.xml, 'type', 'text-single');
            },
Example #4
0
"use strict";

var stanza = require('jxt');
var Iq = require('./iq');
var NS = 'vcard-temp';

var VCardTemp = module.exports = stanza.define({
    name: 'vCardTemp',
    namespace: NS,
    element: 'vCard',
    fields: {
        fullName: stanza.subText(NS, 'FN'),
        birthday: stanza.dateSub(NS, 'BDAY'),
        nicknames: stanza.multiSubText(NS, 'NICKNAME')
    }
});

var Name = stanza.define({
    name: 'name',
    namespace: NS,
    element: 'N',
    fields: {
        family: stanza.subText(NS, 'FAMILY'),
        given: stanza.subText(NS, 'GIVEN'),
        middle: stanza.subText(NS, 'MIDDLE'),
        prefix: stanza.subText(NS, 'PREFIX'),
        suffix: stanza.subText(NS, 'SUFFIX')
    }
});

var Photo = stanza.define({