Net::OpenID::Yadis3pm
Perform yadis discovery on urls
Usage
use Net::OpenID::Yadis;my $disc = Net::OpenID::Yadis->new(consumer => $consumer, # Net::OpenID::Consumer object);my $xrd = $disc->discover("http://id.example.com/") or Carp::croak($disc->err);print $disc->identity_url; # Yadis URL (Final URL if redirected)print $disc->xrd_url; # Yadis Resourse Descriptor URLforeach my $srv (@$xrd) { # Loop for Each Service in Yadis Resourse Descriptorprint $srv->priority; # Service priority (sorted)print $srv->Type; # Identifier of some version of some service (scalar, array or array ref)print $srv->URI; # URI that resolves to a resource providing the service (scalar, array or array ref)print $srv->extra_field("Delegate","http://openid.net/xmlns/1.0");# Extra field of some service}# If you are interested only in OpenID. (either 1.1 or 2.0)my $xrd = $self->services('http://specs.openid.net/auth/2.0/signon','http://specs.openid.net/auth/2.0/server','http://openid.net/signon/1.1',);# If you want to choose random server by code-ref.my $xrd = $self->services(sub{($_[int(rand(@_))])});
Version
version 1.20
Overview
This module provides an implementation of the Yadis protocol, which does XRDS-based service discovery on URLs.
This module was originally developed by OHTSUKA Ko-hei as Net::Yadis::Discovery, but was forked and simplified for inclusion in the core OpenID Consumer package.
This simplified version is tailored for the needs of Net::OpenID::Consumer; for other uses, Net::Yadis::Discovery is probably a better choice.
Constructor
- "new"
-
my
$disc= Net::OpenID::Yadis->new([%opts]);You can set the
"consumer"in the constructor. See the corresponding method description below.
Export
This module exports three constant values to use with discover method.
- "YR_GET"
-
If you set this, module check Yadis URL start from HTTP GET request. This is the default.
- "YR_XRDS"
-
If you set this, this module consider Yadis URL as Yadis Resource Descriptor URL. If not so, an error is returned.
Methods
- $disc->
consumer($consumer)
- $disc->
consumer -
Get or set the Net::OpenID::Consumer object that this object is associated with.
- $disc->
discover($url,[$request_method]) -
Given a user-entered
$url(which could be missing http://, or have extra whitespace, etc), returns either array/array ref of Net::OpenID::Yadis::Service objects, or undef on failure.$request_methodis optional, and if set this, you can change the HTTP request method of fetching Yadis URL. See EXPORT to know the value you can set, and default is YR_HEAD.If this method returns undef, you can rely on the following errors codes (from
$csr->errcode) to decide what to present to the user:- xrd_parse_error
- xrd_format_error
- too_many_hops
- no_yadis_document
- url_fetch_err
- empty_url
- url_gone
- $disc->
xrd_objects -
Returns array/array ref of Net::OpenID::Yadis objects. It is same what could be got by discover method.
- $disc->
identity_url -
Returns Yadis URL. If not redirected, it is same with the argument of discover method.
- $disc->
xrd_url -
Returns Yadis Resource Descriptor URL.
- $disc->
servers($protocol,$protocol,...)
- $disc->
servers($protocol=>[$version1,$version2],...)
- $disc->
servers($protocol,....,$code_ref); -
Filter method of xrd_objects.
If no option is defined, returns same result with xrd_objects method.
protocol names or Type URLs are given, filter only given protocol. Two or more protocols are given, return and results of filtering.
Sample:
$disc->servers("openid","http://lid.netmesh.org/sso/1.0");If reference of version numbers array is given after protocol names, filter only given version of protocol.
Sample:
$disc->servers("openid"=>['1.0','1.1'],"lid"=>['1.0']);If you want to use version numbers limitation with type URL, you can use \ver as place holder of version number.
Sample:
$disc->servers("http://lid.netmesh.org/sso/\ver"=>['1.0','2.0']);If code reference is given as argument , you can make your own filter rule. code reference is executed at the last of filtering logic, like this:
@results = $code_ref->(@temporary_results)Sample: If you want to filter OpenID server and get only first one:
($openid_server) =$disc->servers("openid",sub{$_[0]});
- $disc->
err -
Returns the last error, in form "errcode: errtext"
- $disc->
errcode -
Returns the last error code.
- $disc->
errtext -
Returns the last error text.
Warranty
This is free software. IT COMES WITHOUT WARRANTY OF ANY KIND.
Releases
8 releases since Debian 6.0 (Squeeze); the text changed 4 times.