File manager - Edit - /usr/local/cpanel/3rdparty/perl/542/cpanel-lib/OAuth/Lite2/ParamMethod/FormEncodedBody.pm
Back
package OAuth::Lite2::ParamMethod::FormEncodedBody; use strict; use warnings; use parent 'OAuth::Lite2::ParamMethod'; use HTTP::Request; use HTTP::Headers; use Carp (); use bytes (); use Params::Validate; use OAuth::Lite2::Util qw(build_content); =head1 NAME OAuth::Lite2::ParamMethod::FormEncodedBody - builder/parser for OAuth 2.0 FormEncodedBody type of parameter =head1 SYNOPSIS my $meth = OAuth::Lite2::ParamMethod::FormEncodedBody->new; # server side if ($meth->match( $plack_request )) { my ($token, $params) = $meth->parse( $plack_request ); } # client side my $http_req = $meth->request_builder(...); =head1 DESCRIPTION builder/parser for OAuth 2.0 FormEncodedBody type of parameter =head1 METHODS =head2 new Constructor =head2 match( $plack_request ) Returns true if passed L<Plack::Request> object is matched for the type of this method. if ( $meth->match( $plack_request ) ) { ... } =cut sub match { my ($self, $req) = @_; my $method = lc $req->method; return (($method eq 'post' || $method eq 'put' || $method eq 'delete') && $req->content_type eq 'application/x-www-form-urlencoded' && ($req->body_parameters->{oauth_token} || $req->body_parameters->{access_token})); } =head2 parse( $plack_request ) Parse the L<Plack::Request>, and returns access token and oauth parameters. my ($token, $params) = $meth->parse( $plack_request ); =cut sub parse { my ($self, $req) = @_; my $params = $req->body_parameters; my $token = $params->{access_token}; $params->remove('access_token'); if($params->{oauth_token}){ $token = $params->{oauth_token}; $params->remove('oauth_token'); } return ($token, $params); } =head2 build_request( %params ) Build L<HTTP::Request> object. my $req = $meth->build_request( url => $url, method => $http_method, token => $access_token, oauth_params => $oauth_params, params => $params, content => $content, headers => $headers, ); =cut sub build_request { my $self = shift; my %args = Params::Validate::validate(@_, { url => 1, method => 1, token => 1, oauth_params => 1, params => { optional => 1 }, content => { optional => 1 }, headers => { optional => 1 }, }); my $method = uc $args{method}; if ($method eq 'GET' || $method eq 'DELETE') { Carp::croak qq{When you request with GET or DELETE method, } .qq{You can't use FormEncodedBody type OAuth parameters.} } else { my $oauth_params = $args{oauth_params} || {}; $oauth_params->{access_token} = $args{token}; my $headers = $args{headers}; if (defined $headers) { if (ref($headers) eq 'ARRAY') { $headers = HTTP::Headers->new(@$headers); } else { $headers = $headers->clone; } } else { $headers = HTTP::Headers->new; } unless ($headers->header("Content-Type")) { $headers->header("Content-Type", "application/x-www-form-urlencoded"); } my $content_type = $headers->header("Content-Type"); my $params = $args{params} || {}; if ($content_type ne "application/x-www-form-urlencoded") { Carp::croak qq{When you use FormEncodedBody-type OAuth parameters,} .qq{Content-Type header must be application/x-www-form-urlencoded.} } my $content = build_content({%$params, %$oauth_params}); $headers->header("Content-Length", bytes::length($content)); my $req = HTTP::Request->new($method, $args{url}, $headers, $content); return $req; } } =head2 is_legacy( $plack_request ) Returns true if passed L<Plack::Request> object is based draft version 10. if ( $meth->is_legacy( $plack_request ) ) { ... } =cut sub is_legacy { my ($self, $req) = @_; return (exists $req->body_parameters->{oauth_token}); } =head1 SEE ALSO L<OAuth::Lite2::ParamMethods> L<OAuth::Lite2::ParamMethod> L<OAuth::Lite2::ParamMethod::AuthHeader> L<OAuth::Lite2::ParamMethod::URIQueryParameter> =head1 AUTHOR Lyo Kato, E<lt>lyo.kato@gmail.comE<gt> =head1 COPYRIGHT AND LICENSE Copyright (C) 2010 by Lyo Kato This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.8 or, at your option, any later version of Perl 5 you may have available. =cut 1;
| ver. 1.4 |
Github
|
.
| PHP 8.1.34 | Generation time: 0.04 |
proxy
|
phpinfo
|
Settings