Async-Microservice

 view release on metacpan or  search on metacpan

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

package Async::MicroserviceReq;

use strict;
use warnings;
use 5.010;

our $VERSION = '0.08';

use Moose;
use namespace::autoclean;
use URI;
use AnyEvent::IO qw(aio_load);
use Try::Tiny;
use JSON::XS;
use Plack::MIME;
use MooseX::Types::Path::Class;
use Future::AsyncAwait;
use Log::Any        qw($log);
use HTTP::Negotiate qw(choose);
use Scalar::Util    qw(weaken);

our $json = JSON::XS->new->utf8->pretty->canonical;
our @no_cache_headers =
    ( 'Cache-Control' => 'private, max-age=0', 'Expires' => '-1' );
our $pending_req = 0;

has 'method'  => ( is => 'ro', isa => 'Str',    required => 1 );
has 'headers' => ( is => 'ro', isa => 'Object', required => 1 );
has 'path'    => ( is => 'ro', isa => 'Str',    required => 1 );
has 'content' => ( is => 'ro', isa => 'Str',    required => 1 );
has 'json_content' => (
    is       => 'ro',
    isa      => 'Ref',
    required => 0,
    lazy     => 1,
    builder  => '_build_json_content'
);
has 'params' => ( is => 'ro', isa => 'Object', required => 1 );
has 'plack_respond' => (
    is       => 'rw',
    isa      => 'CodeRef',
    required => 0,
    clearer  => 'clear_plack_respond'
);
has 'static_dir' =>
    ( is => 'ro', isa => 'Path::Class::Dir', required => 1, coerce => 1 );

has 'base_url' => (
    is       => 'ro',
    isa      => 'URI',
    required => 1,
    lazy     => 1,
    builder  => '_build_base_url'
);
has 'want_json' => (
    is       => 'ro',
    isa      => 'Bool',
    required => 1,
    lazy     => 1,
    builder  => '_build_want_json'
);
has 'jsonp' => (
    is       => 'ro',
    isa      => 'Str',
    required => 1,
);
has 'using_frontend_proxy' => (
    is      => 'ro',
    isa     => 'Bool',
    default => 0,
);
has 'pending_ref' => (
    is       => 'ro',



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