API-Eulerian
view release on metacpan or search on metacpan
lib/API/Eulerian/EDW/Parser/CSV.pm view on Meta::CPAN
#
# @return API::Eulerian::EDW::Json Parser.
#
sub new
{
my ( $class, $path, $uuid ) = @_;
my $self;
my $file;
my $fd;
if( open( $file, '<:encoding(utf8)', $path ) ) {
$self = $class->SUPER::new( $path, $uuid );
$self->{ _FILE } = $file;
$self->{ _PARSER } = Text::CSV->new( {
binary => 1,
auto_diag => 1,
sep_char => ',',
} );
}
return $self;
lib/API/Eulerian/EDW/Peer/Rest.pm view on Meta::CPAN
sub uuid
{
my ( $self, $uuid ) = @_;
$self->{ _UUID } = $uuid if defined( $uuid );
return $self->{ _UUID };
}
#
# @brief Encoding attribute accessors.
#
# @param $self - Eulerian Data Warehouse Peer.
# @param $encoding - Encoding.
#
# @return Encoding.
#
sub encoding
{
my ( $self, $encoding ) = @_;
$self->{ _ENCODING } = $encoding if defined( $encoding );
return $self->{ _ENCODING };
}
#
# @brief Accept attribute accessors.
#
# @param $self - Eulerian Data Warehouse Peer.
# @param $accept - Accept.
#
# @return Accept.
#
lib/API/Eulerian/EDW/Peer/Rest.pm view on Meta::CPAN
#
sub setup
{
my ( $self, $setup ) = @_;
# Setup base interface values
$self->SUPER::setup( $setup );
# Setup Rest specifics options
$self->accept( $setup->{ accept } ) if exists( $setup->{ accept } );
$self->encoding( $setup->{ encoding } ) if exists( $setup->{ encoding } );
$self->wdir( $setup->{ wdir } ) if exists( $setup->{ wdir } );
return $self;
}
#
# @brief Dump Eulerian Data Warehouse Peer setup.
#
# @param $self - Eulerian Data Warehouse Peer.
#
sub dump
{
my $self = shift;
my $dump = '';
$self->SUPER::dump();
$dump .= 'Accept : ' . $self->accept() . "\n";
$dump .= 'Encoding : ' . $self->encoding() . "\n";
$dump .= 'WorkDir : ' . $self->wdir() . "\n\n";
print( $dump );
return $self;
}
#
# @brief Get remote URL to Eulerian Data Warehouse Platform.
#
# @param $self - Eulerian Data Warehouse Peer.
#
# @return Remote URL to Eulerian Data Warehouse Platform.
lib/API/Eulerian/EDW/Peer/Rest.pm view on Meta::CPAN
sub headers
{
my $self = shift;
my $status = $self->SUPER::headers();
my $headers;
if( ! $status->error() ) {
$headers = $status->{ headers };
$headers->push_header( 'Content-Type', 'application/json' );
$headers->push_header( 'Accept', $self->accept() );
$headers->push_header( 'Accept-Encoding', $self->encoding() );
}
return $status;
}
#
# @brief Create a new JOB on Eulerian Data Warehouse Rest Platform.
#
# @param $self - Eulerian Data Warehouse Peer.
# @param $command - Eulerian Data Warehouse Command.
#
lib/API/Eulerian/EDW/Peer/Rest.pm view on Meta::CPAN
#
# @brief Get Path to local filepath.
#
# @param $self - API::Eulerian::EDW::Rest instance.
#
# @return Local file path.
#
sub path
{
my ( $self, $response ) = @_;
my $encoding = $self->encoding();
my $json = API::Eulerian::EDW::Request->json( $response );
my $pattern = '([0-9]*)\.(json|csv|parquet)';
my $status = API::Eulerian::EDW::Status->new();
my $url = $json->{ data }->[ 1 ];
my $wdir = $self->wdir();
my %rc = ();
if( ! $wdir ) {
$status->error( 1 );
$status->code( 400 );
lib/API/Eulerian/EDW/Peer/Rest.pm view on Meta::CPAN
$status = $self->headers();
if( ! $status->{ error } ) {
# Send Download request to remote host, reply is
# writen into $path file
$status = API::Eulerian::EDW::Request->get(
$url, $status->{ headers }, $path
);
# Handle errors
if( ! $status->error() ) {
my $encoding = $status->{ 'encoding' };
if( defined( $encoding ) && ( $encoding eq 'gzip' ) ) {
rename $path, "$path.gz";
$status->{ path } = $self->unzip( "$path.gz" );
} else {
$status->{ path } = $path;
}
} else {
print "ERROR : " . $status->{ _CODE } . "\n";
}
}
lib/API/Eulerian/EDW/Request.pm view on Meta::CPAN
$status->{ response } = $response;
if( $response->code != HTTP_OK ) {
$status->error( 1 );
$status->code( $response->code );
$status->msg(
defined( $json ) ?
encode_json( $json ) : $response->content()
);
} else {
if( defined( $response->header( 'content-encoding' ) ) ) {
$status->{ encoding } = $response->header( 'content-encoding' );
}
}
return $status;
}
#
# End up module properly
#
1;
( run in 0.238 second using v1.01-cache-2.11-cpan-a5abf4f5562 )