--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/lib/Joker.pm Fri Aug 08 16:35:25 2014 +0200
@@ -0,0 +1,64 @@
+package Joker;
+
+use 5.010;
+use strict;
+use warnings;
+use Carp;
+
+use Moose;
+use MooseX::SemiAffordanceAccessor;
+use LWP::UserAgent;
+
+has [qw(username password)] => (
+ isa => 'Str',
+ is => 'ro',
+ required => 1
+);
+
+has uri => (
+ isa => 'Str',
+ is => 'ro',
+ default => 'https://dmapi.joker.com/request/',
+);
+
+has ua => (
+ isa => 'LWP::UserAgent',
+ is => 'ro',
+ default => sub { LWP::UserAgent->new },
+);
+
+has auth_id => (
+ isa => 'Str',
+ is => 'ro',
+ lazy => 1,
+ builder => 'login',
+);
+
+sub request {
+ my ($self, $type) = (shift, shift);
+ my %parm = (
+ 'Auth-Sid', $self->auth_id,
+ @_,
+ );
+ my $req = HTTP::Request->new(
+ GET => $self->uri . "$type?" . join '&', map { "$_=$parm{$_}" } keys %parm);
+ my $result = $self->ua->request($req);
+ croak $result->status_line if not $result->is_success;
+ return $result->content;
+}
+
+sub login {
+ my $self = shift;
+ my $req = HTTP::Request->new(
+ GET => $self->uri . 'login?'
+ . 'username=' . $self->username . '&'
+ . 'password=' . $self->password);
+ my $result = $self->ua->request($req);
+
+ croak $result->status_line if not $result->is_success;
+ return $1 if $result->content =~ /^Auth-Sid:\s+(\S+)/m;
+
+ croak q{Can't get Auth-Sid};
+}
+
+1;