A WebFinger client that runs both in the browser and in node.js.
-
defaults to TLS only
-
optional URI fallback (for older services which use
host-meta
orhost-meta.json
URI endpoints) -
optional support for WebFist
In node.js you should first require the module:
var WebFinger = require('webfinger.js');
When you include the src/webfinger.js
script, a WebFinger
object will be exposed.
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
// }
// }
See a working demo here