XMPP For The Web/Win ::: XMPP-FTW (1.16.8) Flattr this

Extensions

This page covers additional extensions for XMPP-FTW.

These extensions are loaded into the XMPP-FTW demo client. This document follows the conventions of the main manual page.

SuperFeedr

For more information about the Superfeedr XMPP API please see: http://superfeedr.com/documentation#pubsubhubbub.

Subscribe to a feed

Whilst superfeedr allows users to subscribe to multiple feeds in one request for simplicity this is restricted to a single subscription per request.

        socket.send(
            'xmpp.superfeedr.subscribe',
            {
                "feed": "http://www.evilprofessor.co.uk/feed",
             /* "jid": "website@evilprofessor.co.uk" */
            },
            function(error, data) { console.log(error, data) }
        )
        

If no JID is provided this defaults to the jid used to log in to the server with.

If a subscription is successful then the response will look like the following:

        {
            "feed": "http://www.evilprofessor.co.uk/feed",
            "jid": "lloyd@evilprofessor.co.uk/sky",
            "title": "Building a time machine from a Delorean",
            "status": {
                "response": 200,
                "fetch": {
                    "last": "1955-11-05T06:30:11-08:00",
                    "next": "1985-10-27T01:22:38-08:00",
                    "period": "3600"
                },
                "parsed": "1985-10-27T10:30:00-08:00",
                "maintenance": "1985-10-27T09:59:00-08:00",
                "message": "9718 bytes fetched in 1.462708s : 2 new entries."
            }
        }
        

Unsubscribe from a feed

        socket.send(
            'xmpp.superfeedr.unsubscribe',
            {
                "feed": "https://github.com/xmpp-ftw.atom",
             /* "jid": "github@evilprofessor.co.uk" */
            },
            function(error, data) { console.log(error, data) }
        )
        

If there is no error `data` will simply be true.

Get Subscriptions

        socket.send(
            'xmpp.superfeedr.subscriptions',
            {
              /* "page": 1 */
            },
            function(error, data) { console.log(error, data) }
        

Response will then appear as follows:

        [
            {
                "feed": "http://www.evilprofessor.co.uk/feed",
                "jid": "lloyd@evilprofessor.co.uk/sky",
                "title": "Building a time machine from a Delorean",
                "status": {
                    "response": 200,
                    "fetch": {
                        "last": "1955-11-05T06:30:11-08:00",
                        "next": "1985-10-27T01:22:38-08:00",
                        "period": "3600"
                    },
                    "parsed": "1985-10-27T10:30:00-08:00",
                    "maintenance": "1985-10-27T09:59:00-08:00",
                    "message": "9718 bytes fetched in 1.462708s : 2 new entries."
                }
            }
        ]
        

Items

An example of an item is as follows:

        {
            "title": "Hello world",
            "id": "http://push-pub.appspot.com/feed/793002",
            "updated": "2013-05-12T15:34:15Z",
            "published": "2013-05-12T15:34:15Z",
            "content": {
                "type": "text",
                "content": "Get a notification"
            },
            "links": [
                {
                    "title": "Hello world",
                    "rel": "alternate",
                    "href": "http://push-pub.appspot.com/entry/793002",
                    "type": "text/html"
                }
            ]
        }
        

New Item Notifications

        {
            meta: {
                "response": 200,
                "fetch": {
                    "last": "1955-11-05T06:30:11-08:00",
                    "next": "1985-10-27T01:22:38-08:00",
                    "period": "3600"
                },
                "parsed": "1985-10-27T10:30:00-08:00",
                "maintenance": "1985-10-27T09:59:00-08:00",
                "message": "9718 bytes fetched in 1.462708s : 2 new entries."
             },
             items: "items": [
                 { ... }
             ]
        }
        

Item Retrieval

        socket.send(
            'xmpp.superfeedr.retrieve',
            {
                "feed": "http://www.evilprofessor.co.uk/feed"
            },
            function(error, data) { console.log(error, data) }
        )
        

Example response:

        {
            meta: {
                "response": 200,
                "fetch": {
                    "last": "1955-11-05T06:30:11-08:00",
                    "next": "1985-10-27T01:22:38-08:00",
                    "period": "3600"
                },
                "parsed": "1985-10-27T10:30:00-08:00",
                "maintenance": "1985-10-27T09:59:00-08:00",
                "message": "9718 bytes fetched in 1.462708s : 2 new entries."
             },
             items: [
                { ... }
             ]
        }
        

Buddycloud

The buddycloud extension details can no tbe found on their own page: Buddycloud extension for XMPP-FTW.

Fanout

Log in

If not using the fanout gateway, then anonymous login is performed as follows:

        socket.send(
          'xmpp.login.anonymous',
          { jid: 'anon.fanout.io' }
        )
        

If using the fanout gateway then the payload can simply be any empty object.

Subscribe

Subscribe to fanout events as follows:

        socket.send(
            'fanout.fpp.subscribe',
            {
                "channel": "your-channel",
                "realm": "your-realm",
             /* "to": "pubsub.fanout.io" */
            },
            function(error, data) { console.log(error, data) }
        )
        

On successful subscription `data` wil simply be true.

Not providing to key will default it to the value in the example payload.

Unsubscribe

        socket.send(
            'fanout.fpp.unsubscribe',
            {
                "channel": "your-channel",
                "realm": "your-realm",
             /* "to": "pubsub.fanout.io" */
            },
            function(error, data) { console.log(error, data) }
        )
        

On successful unsubscribe `data` wil simply be true.

Not providing to key will default it to the value in the example payload.

Event notifications

        {
            "from": "pubsub.fanout.io",
            "channel": "your-channel",
            "realm": "your-realm",
            "content": {
                "json": { ... the JSON content ... }
            }
        }
        

Pages

Fork me on GitHub