webfinger.js

a simple webfinger record lookup library


Keywords
webfinger, webfist, discovery, hostmeta, jrd, finger, useraddress, lookup
License
Other
Install
npm install webfinger.js@2.7.1

Documentation

webfinger.js

A webfinger client that runs both in the browser and in node.js.

Build Status license downloads release

Features

  • defaults to TLS only

  • optional URI fallback (for older services which use host-meta or host-meta.json URI endpoints)

  • optional support for WebFist

Initialize

node.js

In node.js you should first require the module:

  var WebFinger = require('webfinger.js');

Browser

When you include the src/webfinger.js script, a WebFinger object will be exposed.

Use

  var webfinger = new WebFinger({
    webfist_fallback: true,  // defaults to false
    tls_only: true,          // defaults to true
    uri_fallback: false,     // defaults to false
    request_timeout: 10000,  // defaults to 10000
  });

  webfinger.lookup('nick@silverbucket.net', function (err, p) {
    if (err) {
      console.log('error: ', err.message);
    } else {
      console.log(p);
    }
  });


// example output:
// {
//   idx: {
//     properties: {
//       name: "Nick Jennings"
//     },
//     links: {
//       avatar: [{ href: '<url>' }],
//       blog: [{ href: '<url>' }],
//       vcard: [href: '<url' }]
//       ... etc.
//     },
//   }
//   json: { ... raw json output ... }
//   object: { ... unformatted but parsed into native javascript object ... }
// }

  webfinger.lookupLink('nick@silverbucket.net', 'remotestorage' function (err, p) {
    if (err) {
      console.log('error: ', err.message);
    } else {
      console.log(p);
    }
  });

// example output (if at least one link with rel="remotestorage" exists):
// {
//   href: 'https://storage.5apps.com/nick',
//   rel : 'remotestorage',
//   properties: {
//     'http://remotestorage.io/spec/version': 'draft-dejong-remotestorage-02',
//     'http://tools.ietf.org/html/rfc6749#section-4.2': 'https://5apps.com/rs/oauth/nick',
//     'http://tools.ietf.org/html/rfc6750#section-2.3': false,
//     'http://tools.ietf.org/html/rfc2616#section-14.16': false
//   }
// }

Demo

See a working demo here

License

webfinger.js is released under the LGPL. See LICENSE