.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.29) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is turned on, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{ . if \nF \{ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" ======================================================================== .\" .IX Title "Net::OpenID::IndirectMessage 3pm" .TH Net::OpenID::IndirectMessage 3pm "2016-02-13" "perl v5.22.1" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" Net::OpenID::IndirectMessage \- Class representing a collection of namespaced arguments .SH "VERSION" .IX Header "VERSION" version 1.20 .SH "DESCRIPTION" .IX Header "DESCRIPTION" This class acts as an abstraction layer over a collection of flat \s-1URL\s0 arguments which supports namespaces as defined by the OpenID Auth 2.0 specification. .PP It also recognises when it is given OpenID 1.1 non-namespaced arguments and acts as if the relevant namespaces were present. In this case, it only supports the basic OpenID 1.1 arguments and the extension arguments for Simple Registration. .PP This class can operate on a normal hashref, a \s-1CGI\s0 object or any object with a \f(CW\*(C`param\*(C'\fR method that behaves similarly (Apache::Request, Apache2::Request, Mojo::Parameters,...), an Apache object, a Plack::Request object, or an arbitrary \f(CW\*(C`CODE\*(C'\fR ref that when given a key name as its first parameter and returns a value and if given no arguments returns a list of all keys present. .PP If you pass in a hashref or a coderef it is your responsibility as the caller to check the \s-1HTTP\s0 request method and pass in the correct set of arguments. For the other kinds of objects, this module will do the right thing automatically. .SH "SYNOPSIS" .IX Header "SYNOPSIS" .Vb 1 \& use Net::OpenID::IndirectMessage; \& \& # Pass in something suitable for the underlying flat dictionary. \& # Will return an instance if the request arguments can be understood \& # as a supported OpenID Message format. \& # Will return undef if this doesn\*(Aqt seem to be an OpenID Auth message. \& # Will croak if the $argumenty_thing is not of a suitable type. \& my $args = Net::OpenID::IndirectMessage\->new($argumenty_thing); \& \& # Determine which protocol version the message is using. \& # Currently this can be either 1 for 1.1 or 2 for 2.0. \& # Expect larger numbers for other versions in future. \& # Most callers don\*(Aqt really need to care about this. \& my $version = $args\->protocol_version(); \& \& # Get a core argument value ("openid.mode") \& my $mode = $args\->get("mode"); \& \& # Get an extension argument value \& my $nickname = $args\->get_ext("http://openid.net/extensions/sreg/1.1", "nickname"); \& \& # Get hashref of all arguments in a given namespace \& my $sreg = $args\->get_ext("http://openid.net/extensions/sreg/1.1"); .Ve .PP Most of the time callers won't need to use this class directly, but will instead access it through a Net::OpenID::Consumer instance. .SH "METHODS" .IX Header "METHODS" .IP "\fBprotocol_version\fR" 4 .IX Item "protocol_version" Currently returns 1 or 2, according as this is an OpenID 1.0/1.1 or an OpenID 2.0 message. .IP "\fBhas_ext\fR" 4 .IX Item "has_ext" Takes an extension namespace and returns true if the named extension is used in this message. .IP "\fBget_ext\fR" 4 .IX Item "get_ext" Takes an extension namespace and an optional parameter name, returns the parameter value, or if no parameter given, the parameter value.