Starting to talk with API
This commit is contained in:
parent
e243e7bbcf
commit
5709fa03d2
2 changed files with 147 additions and 0 deletions
98
ACU/API/Base.pm
Normal file
98
ACU/API/Base.pm
Normal file
|
@ -0,0 +1,98 @@
|
|||
#! /usr/bin/env perl
|
||||
|
||||
package Base;
|
||||
|
||||
use v5.10.1;
|
||||
use strict;
|
||||
use warnings;
|
||||
use HTTP::Request::Common qw(GET POST);
|
||||
use LWP::UserAgent;
|
||||
use XML::LibXML;
|
||||
use XML::SAX::ParserFactory;
|
||||
|
||||
sub parse($$)
|
||||
{
|
||||
my $mod = shift;
|
||||
my $parsed = {};
|
||||
|
||||
my $sax_handler;
|
||||
$sax_handler = ResultHandler->new($parsed) if ($mod eq "ResultHandler");
|
||||
|
||||
my $parser = XML::SAX::ParserFactory->parser( Handler => $sax_handler );
|
||||
|
||||
$parser->parse_string(shift);
|
||||
|
||||
return $parsed;
|
||||
}
|
||||
|
||||
sub get($$)
|
||||
{
|
||||
my $next = shift;
|
||||
my $url = shift;
|
||||
my $ua = LWP::UserAgent->new;
|
||||
my $req = GET 'https://lerdorf.acu.epita.fr/intra/api/' . $url;
|
||||
|
||||
return parse($next, $ua->request($req)->as_string);
|
||||
}
|
||||
|
||||
sub send($$@)
|
||||
{
|
||||
my $next = shift;
|
||||
my $url = shift;
|
||||
my $ua = LWP::UserAgent->new;
|
||||
my $req = POST 'https://lerdorf.acu.epita.fr/intra/api/' . $url, @_;
|
||||
|
||||
return parse($next, $ua->request($req)->as_string);
|
||||
}
|
||||
|
||||
|
||||
package ResultHandler;
|
||||
|
||||
use v5.10.1;
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
sub new ($$)
|
||||
{
|
||||
my $class = shift;
|
||||
my $self = {
|
||||
parsed => shift,
|
||||
inResult => 0,
|
||||
values => ""
|
||||
};
|
||||
|
||||
bless $self, $class;
|
||||
|
||||
return $self;
|
||||
}
|
||||
|
||||
sub start_element
|
||||
{
|
||||
my ($self, $element) = @_;
|
||||
|
||||
if ($element->{Name} eq "result") {
|
||||
$self->{inResult} = 1;
|
||||
}
|
||||
}
|
||||
|
||||
sub characters
|
||||
{
|
||||
my ($self, $characters) = @_;
|
||||
|
||||
if ($self->{inResult}) {
|
||||
$self->{values} .= $characters->{Data};
|
||||
}
|
||||
}
|
||||
|
||||
sub end_element
|
||||
{
|
||||
my ($self, $element) = @_;
|
||||
|
||||
if ($element->{Name} eq "result") {
|
||||
$self->{parsed}{result} = $self->{values};
|
||||
$self->{inResult} = 0;
|
||||
$self->{values} = "";
|
||||
}
|
||||
}
|
||||
|
||||
1;
|
49
ACU/API/Submission.pm
Normal file
49
ACU/API/Submission.pm
Normal file
|
@ -0,0 +1,49 @@
|
|||
#! /usr/bin/env perl
|
||||
|
||||
package Submission;
|
||||
|
||||
use v5.10.1;
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
use ACU::API::Base;
|
||||
|
||||
sub add($$$$$)
|
||||
{
|
||||
my $year = shift;
|
||||
my $project = shift;
|
||||
my $tag = shift;
|
||||
my $user = shift;
|
||||
my $log = shift;
|
||||
|
||||
my $res = Base::send('ResultHandler', "projects/submissions/add.xml", [ leader_login => $user, project_name => $project, year => $year, log => $log, tag => $tag ]);
|
||||
|
||||
if ($res->{result} == '0') {
|
||||
say "Rendu ok";
|
||||
}
|
||||
else {
|
||||
say "Rendu non ok : retour de l'API non nul.";
|
||||
}
|
||||
}
|
||||
|
||||
sub get($$$$)
|
||||
{
|
||||
my $year = shift;
|
||||
my $project = shift;
|
||||
my $tag = shift;
|
||||
my $user = shift;
|
||||
|
||||
my $res = Base::get('ResultHandler', "projects/submissions/get/$project/$year/$user/$tag.xml");
|
||||
|
||||
if ($res->{result} == '0') {
|
||||
say "Rendu ok";
|
||||
}
|
||||
elsif ($res->{result} == '1') {
|
||||
say "Pas encore rendu";
|
||||
}
|
||||
else {
|
||||
say "Erreur: retour de l'API non valide.";
|
||||
}
|
||||
}
|
||||
|
||||
1;
|
Reference in a new issue