Toby Inkster
and 3 contributors

NAME

WWW::Finger::Webfinger - WWW::Finger module for Webfinger

DESCRIPTION

Webfinger is currently a very unstable specification, with implementation details changing all the time. Given this instability, it seems prudent to describe the protocol, as implemented by this package.

Given an e-mail-like identifier, the package will prepend "acct:" to it, assuming that the identifier doesn't already have a URI scheme. This identifier will now be called [ident].

The package looks up the host-meta file associated with the host for [ident]. It is assumed to be formatted according to the draft-hammer-hostmeta-05 Internet Draft http://tools.ietf.org/html/draft-hammer-hostmeta-05 and XRD Working Draft 10 <http://www.oasis-open.org/committees/download.php/35274/xrd-1.0-wd10.html>. Both these drafts are dated 19 November 2009.

A link template will be extracted from the host-meta for the host using either of the following two relationships: http://lrdd.net/rel/descriptor, http://www.iana.org/assignments/relation/lrdd. (Neither is prioritised, so if both exist and have different templates, hilarity will ensue.)

The token "{uri}" in the link template will be replaced with the URL-encoded version of [ident] to create an account descriptor URI.

The account descriptor URI is fetched via HTTP GET with an Accept header asking for RDF/XML, Turtle, RDF/JSON or XRD. The result is parsed for account description data if it has status code 200 (OK).

The following relationships/properties are understood in the account description:

  • http://xmlns.com/foaf/0.1/name

  • http://xmlns.com/foaf/0.1/homepage

  • http://webfinger.net/rel/profile-page

  • http://xmlns.com/foaf/0.1/weblog

  • http://xmlns.com/foaf/0.1/mbox

  • http://webfinger.net/rel/avatar

  • http://xmlns.com/foaf/0.1/img

  • http://xmlns.com/foaf/0.1/depiction

  • http://ontologi.es/sparql#endpoint

As well as the standard WWW::Finger methods, WWW::Finger::Webfinger provides this additional method:

get($p1, $p2, ...)

$p1, $p2 and are RDF predicate URIs, XRD Link@rel values, or XRD Property@type values

  # Returns phone numbers...
  $finger->get('http://xmlns.com/foaf/0.1/phone',
               'http://rdf.data-vocabulary.org/#tel');
  
  # Salmon-style magic keys
  $finger->get('magic-public-key');

SEE ALSO

WWW::Finger, XRD::Parser, HTTP::LRDD.

http://code.google.com/p/webfinger/.

AUTHOR

Toby Inkster, <tobyink@cpan.org>

COPYRIGHT AND LICENCE

Copyright (C) 2009-2012 by Toby Inkster

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

DISCLAIMER OF WARRANTIES

THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.