lib/Joker.pm
changeset 4 08a632c3244f
child 5 21e23104454c
equal deleted inserted replaced
3:982137f0f926 4:08a632c3244f
       
     1 package Joker;
       
     2 
       
     3 use 5.010;
       
     4 use strict;
       
     5 use warnings;
       
     6 use Carp;
       
     7 
       
     8 use Moose;
       
     9 use MooseX::SemiAffordanceAccessor;
       
    10 use LWP::UserAgent;
       
    11 
       
    12 has [qw(username password)] => (
       
    13     isa => 'Str',
       
    14     is => 'ro',
       
    15     required => 1
       
    16 );
       
    17 
       
    18 has uri => (
       
    19     isa => 'Str',
       
    20     is => 'ro',
       
    21     default => 'https://dmapi.joker.com/request/',
       
    22 );
       
    23 
       
    24 has ua => (
       
    25     isa => 'LWP::UserAgent',
       
    26     is => 'ro',
       
    27     default => sub { LWP::UserAgent->new },
       
    28 );
       
    29 
       
    30 has auth_id => (
       
    31     isa => 'Str',
       
    32     is => 'ro',
       
    33     lazy => 1,
       
    34     builder => 'login',
       
    35 );
       
    36 
       
    37 sub request {
       
    38     my ($self, $type) = (shift, shift);
       
    39     my %parm = (
       
    40 	'Auth-Sid', $self->auth_id,
       
    41 	@_,
       
    42     );
       
    43     my $req = HTTP::Request->new(
       
    44 	GET => $self->uri . "$type?" .  join '&', map { "$_=$parm{$_}" } keys %parm);
       
    45     my $result = $self->ua->request($req);
       
    46     croak $result->status_line if not $result->is_success;
       
    47     return $result->content;
       
    48 }
       
    49 
       
    50 sub login {
       
    51     my $self = shift;
       
    52     my $req = HTTP::Request->new(
       
    53 	GET => $self->uri . 'login?'
       
    54 	    . 'username=' . $self->username . '&'
       
    55 	    . 'password=' . $self->password);
       
    56     my $result = $self->ua->request($req);
       
    57 
       
    58     croak $result->status_line if not $result->is_success;
       
    59     return $1 if $result->content =~ /^Auth-Sid:\s+(\S+)/m;
       
    60 
       
    61     croak q{Can't get Auth-Sid};
       
    62 }
       
    63 
       
    64 1;