Activiti-Rest-Client

 view release on metacpan or  search on metacpan

lib/Activiti/Rest/Client.pm  view on Meta::CPAN

package Activiti::Rest::Client;
use Activiti::Sane;
use Carp qw(confess);
use Moo;
use Data::Util qw(:check :validate);
use JSON qw(decode_json encode_json);
use URI::Escape qw(uri_escape);
use Activiti::Rest::Response;

our $VERSION = "0.1259";

#see: http://www.activiti.org/userguide

=head1 NAME

Activiti::Rest::Client - Low level client for the Activiti Rest API

=head1 AUTHORS

Nicolas Franck C<< <nicolas.franck at ugent.be> >>

=head1 NOTE

This is a work in progress. More documentation will be added in time

=head1 PROJECT

see http://www.activiti.org/userguide

=head1 SYNOPSIS

  my $client = Activiti::Rest::Client->new(
    url => 'http://kermit:kermit@localhost:8080/activiti-rest/service'
  );

  my $res = $client->process_definitions;

  die("no parsed content") unless $res->has_parsed_content;

  my $pdefs = $res->parsed_content;

  my @ids = map { $_->{id} } @{ $pdefs->{data} };
  for my $id(@ids){
    print Dumper($client->process_definition(processDefinitionId => $id)->parsed_content);
  }

=head1 CONSTRUCTOR parameters

=head2 url

  base url of the activiti rest api
  activiti-rest uses basic http authentication, so username and password should be included in the url

  e.g.

  http://kermit:kermit@localhost:8080/activiti-rest/service

=cut

has url => (
  is => 'ro',
  isa => sub { $_[0] =~ /^https?:\/\//o or die("url must be a valid web url\n"); },
  required => 1
);

=head2 timeout

  timeout in seconds when connecting to the activiti rest api

  default value is 180

=cut

has timeout => (
  is => 'ro',
  isa => sub { is_integer($_[0]) && $_[0] >= 0 || die("timeout should be natural number"); },
  lazy => 1,
  default => sub { 180; }
);
has ua => (
  is => 'ro',
  lazy => 1,
  builder => '_build_ua'
);
sub _build_ua {
  require Activiti::Rest::UserAgent::LWP;
  Activiti::Rest::UserAgent::LWP->new(
    url => $_[0]->url(),
    timeout => $_[0]->timeout()
  );
}

=head1 METHODS

=head2 deployments

  Retrieve list of Deployments

  parameters: see user guide (http://www.activiti.org/userguide/index.html#N13293)

  equal to rest call:



( run in 1.115 second using v1.01-cache-2.11-cpan-39bf76dae61 )