Async-Microservice

 view release on metacpan or  search on metacpan

lib/Async/Microservice.pm  view on Meta::CPAN

package Async::Microservice;

use strict;
use warnings;
use 5.010;
use utf8;

our $VERSION = '0.08';

use Moose::Role;
requires qw(get_routes service_name);

use Plack::Request;
use Try::Tiny;
use Path::Class qw(dir file);
use MooseX::Types::Path::Class;
use Path::Router;
use Async::MicroserviceReq;
use Log::Any qw($log);
use Future::AsyncAwait;

has 'api_version' => (
    is      => 'ro',
    isa     => 'Int',
    default => 1,
);
has 'jsonp' => (
    is      => 'rw',
    isa     => 'Str',
    default => '',
);
has 'static_dir' => (
    is       => 'ro',
    isa      => 'Path::Class::Dir',
    required => 1,
    coerce   => 1,
    default  => sub {
        my $static_dir = $ENV{STATIC_DIR};
        die 'static dir "'
            . $static_dir
            . '" not found (check $ENV{STATIC_DIR})'
            if !$static_dir || !-d $static_dir;
        return $static_dir;
    },
    lazy => 1,
);
has 'static_path' => ( is => 'ro', isa => 'Str', default => 'static' );
has 'using_frontend_proxy' => (
    is      => 'ro',
    isa     => 'Bool',
    default => 0,
);

has 'router' => (
    is      => 'ro',
    isa     => 'Path::Router',
    lazy    => 1,
    builder => '_build_router'
);
has 'start_time'  => ( is => 'ro', default => sub { time() } );
has 'req_count'   => ( is => 'rw', default => 0 );
has 'pending_req' => ( is => 'rw', default => 0 );

has 'request_timeout' => ( is => 'ro', isa => 'Num', default => 300 );
has 'max_concurrent_requests' => (
    is      => 'ro',
    isa     => 'Int',
    default => 1000,
);

has 'file_placeholder' => ( is => 'ro', default => 'ASYNC-SERVICE-NAME' );

sub _build_router {
    my ($self) = @_;



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