| POE-Component-Github documentation | Contained in the POE-Component-Github distribution. |
POE::Component::Github::Request::Users - Build HTTP::Request objects for Users API
Builds HTTP::Request objects for the Users API.
newAttributes:
cmd user
METHODrequestReturns a HTTP::Request object based on the data passed to new.
Chris BinGOs Williams <chris@bingosnet.co.uk>
Copyright © Chris Williams
This module may be used, modified, and distributed under the same terms as Perl itself. Please see the license that came with your Perl distribution for details.
| POE-Component-Github documentation | Contained in the POE-Component-Github distribution. |
package POE::Component::Github::Request::Users; use strict; use warnings; use HTTP::Request::Common; use vars qw($VERSION); $VERSION = '0.08'; use Moose; use Moose::Util::TypeConstraints; use URI::Escape; with 'POE::Component::Github::Request::Role'; has cmd => ( is => 'ro', isa => enum([qw( search show followers following update follow unfollow pub_keys add_key remove_key emails add_email remove_email )]), required => 1, ); has user => ( is => 'ro', default => '', ); sub request { my $self = shift; # Work out if authenticated is required or not AUTHENTICATED: { if ( $self->login and $self->token ) { # Okay authenticated required. if ( grep { $_ eq $self->cmd } qw(search followers following) ) { last AUTHENTICATED; } # Simple stuff no values required. my $data = [ 'login' => $self->login, 'token' => $self->token ]; if ( $self->cmd =~ /^(show|follow|unfollow|pub_keys|emails)$/ ) { my $url = $self->auth_scheme . join '/', $self->api_url, 'user'; return POST( join('/', $url, 'keys'), $data ) if $self->cmd eq 'pub_keys'; return POST( join('/', $url, 'emails' ), $data ) if $self->cmd eq 'emails'; return POST( join('/', $url, $self->cmd, $self->user ), $data ); } # These have values to pass if ( $self->cmd eq 'update' ) { my $url = $self->auth_scheme . join '/', $self->api_url, 'user'; my $values = $self->values; push @{ $data }, ( "values[$_]", $values->{$_} ) for keys %{ $values }; return POST( join('/', $url, 'show', $self->user), $data ); } if ( $self->cmd =~ /^(add_key|remove_key|add_email|remove_email)$/ ) { my $url = $self->auth_scheme . join '/', $self->api_url, 'user'; push @{ $data }, %{ $self->values }; my ($action,$cmd) = split /\_/, $self->cmd; return POST( join('/', $url, $cmd, $action ), $data ); } } } if ( $self->cmd =~ /^follow(ers|ing)$/ ) { return GET( $self->scheme . join '/', $self->api_url, 'user', 'show', $self->user, $self->cmd ); } if ( $self->cmd =~ /^(show|search)$/ ) { return GET( $self->scheme . join '/', $self->api_url, 'user', $self->cmd, $self->user ); } return; } no Moose; __PACKAGE__->meta->make_immutable; 1; __END__