view release on metacpan or search on metacpan
b) cause the whole of any work that you distribute or publish, that
in whole or in part contains the Program or any part thereof, either
with or without modifications, to be licensed at no charge to all
third parties under the terms of this General Public License (except
that you may choose to grant warranty protection to some or all
third parties, at your option).
c) If the modified program normally reads commands interactively when
run, you must cause it, when started running for such interactive use
in the simplest and most usual way, to print or display an
announcement including an appropriate copyright notice and a notice
that there is no warranty (or else, saying that you provide a
warranty) and that users may redistribute the program under these
conditions, and telling the user how to view a copy of this General
Public License.
d) You may charge a fee for the physical act of transferring a
copy, and you may at your option offer warranty protection in
exchange for a fee.
examples/edw/Rest.pl view on Meta::CPAN
ip => $ip,
token => $token,
site => $site,
query => $query
);
# get local IP
if ( !defined $h_setup{ip} || !length $h_setup{ip} ) {
my $response = HTTP::Tiny->new->get('http://monip.org/');
unless ( $response->{success} ) {
print STDERR "\tunable to reach external network to get IP address.\n";
exit(1);
}
($h_setup{ip}) = ($response->{content} =~ /IP\s:\s(\d+\.\d+\.\d+\.\d+)/gm);
}
foreach my $p ( qw/ grid ip token site query / ) {
if ( !defined $h_setup{$p} || !length $h_setup{$p} ) {
print STDERR "\tmissing $p parameter, check help.\n";
exit(1);
}
}
delete $h_setup{$_} for ( qw/ site query / );
# get query to send
my $qfile = './examples/edw/sql/'.$query.'.sql';
if ( !-e $qfile ) {
print STDERR "\trequested query $query does not exists.\n";
exit(1);
}
my $date_from = time() - 24 * 3600;
my $date_to = time();
my $cmd = File::Slurp::slurp($qfile);
$cmd =~ s/\[% SITE %\]/$site/gm;
$cmd =~ s/\[% DATE_FROM %\]/$date_from/gm;
$cmd =~ s/\[% DATE_TO %\]/$date_to/gm;
examples/edw/get_csv_file.pl view on Meta::CPAN
ip => $ip,
token => $token,
site => $site,
query => $query
);
# get local IP
if ( !defined $h_setup{ip} || !length $h_setup{ip} ) {
my $response = HTTP::Tiny->new->get('http://monip.org/');
unless ( $response->{success} ) {
print STDERR "\tunable to reach external network to get IP address.\n";
exit(1);
}
($h_setup{ip}) = ($response->{content} =~ /IP\s:\s(\d+\.\d+\.\d+\.\d+)/gm);
}
foreach my $p ( qw/ grid ip token site query / ) {
if ( !defined $h_setup{$p} || !length $h_setup{$p} ) {
print STDERR "\tmissing $p parameter, check help.\n";
exit(1);
}
}
delete $h_setup{$_} for ( qw/ site query / );
# get query to send
my $qfile = './examples/edw/sql/'.$query.'.sql';
if ( !-e $qfile ) {
print STDERR "\trequested query $query does not exists.\n";
exit(1);
}
my $date_from = time() - 24 * 3600;
my $date_to = time();
my $cmd = File::Slurp::slurp($qfile);
$cmd =~ s/\[% SITE %\]/$site/gm;
$cmd =~ s/\[% DATE_FROM %\]/$date_from/gm;
$cmd =~ s/\[% DATE_TO %\]/$date_to/gm;
#
# Create a user specific Hook used to handle Analysis replies.
#
my $edw = new API::Eulerian::EDW();
my $rh_ret = $edw->get_csv_file( \%h_setup, $cmd );
use Data::Dumper;
print Dumper($rh_ret);
1;
__END__
=head1 NAME
get_csv_file.pl - Sample EDW script for querying through REST and get a CSV file
=head1 SYNOPSIS
lib/API/Eulerian/EDW/Bench.pm view on Meta::CPAN
# @brief Dump Bench stages suites.
#
# @param $self - API::Eulerian::EDW::Bench instance.
#
sub dump
{
my ( $self ) = @_;
my %suite = %{$self->{ _SUITE }};
foreach my $key ( keys %suite ) {
printf( "%15s : %s\n", $key, $suite{ $key } );
}
printf( "%15s : %s\n", 'total', $self->first()->elapsed() );
}
#
# Endup module properly
#
1;
__END__
=pod
lib/API/Eulerian/EDW/Hook/Noop.pm view on Meta::CPAN
#/usr/bin/env perl
###############################################################################
#
# @file Print.pm
#
# @brief Eulerian Data Warehouse Peer Print Hook class Module definition.
#
# This module is aimed to print Eulerian Data Warehouse Analytics Results into
# the terminal.
#
# @author Thorillon Xavier:x.thorillon@eulerian.com
#
# @date 26/11/2021
#
# @version 1.0
#
###############################################################################
package API::Eulerian::EDW::Hook::Noop;
lib/API/Eulerian/EDW/Hook/Print.pm view on Meta::CPAN
#/usr/bin/env perl
###############################################################################
#
# @file Print.pm
#
# @brief Eulerian Data Warehouse Peer Print Hook class Module definition.
#
# This module is aimed to print Eulerian Data Warehouse Analytics Results into
# the terminal.
#
# @author Thorillon Xavier:x.thorillon@eulerian.com
#
# @date 26/11/2021
#
# @version 1.0
#
###############################################################################
#
lib/API/Eulerian/EDW/Hook/Print.pm view on Meta::CPAN
string_end
foreach my $column ( @$columns ) {
if( ref( $column ) eq 'ARRAY' ) {
$string .= " $column->[ 0 ] : $column->[ 1 ],\n";
} else {
# Thin Peer doesnt return columns types
$string .= " UNKNOWN : $column,\n";
}
}
$string .= " },\n }\n";
print( $string );
return $self;
}
#
# @brief Analysis reply rows on Row outputs analysis.
#
# @param $self - Eulerian Data Warehouse Peer Hook.
# @param $uuid - UUID of Eulerian Analytics Analysis.
# @param $rows - Array of Array of Columns values.
#
sub on_add
{
my ( $self, $uuid, $rows ) = @_;
my $string = '';
for my $row ( @$rows ) {
for my $col ( @$row ) {
$string .= defined( $col ) ? "$col | " : "NULL | ";
}
$string .= "\n";
}
print( $string );
}
#
# @brief Analysis reply rows on Distinct/Pivot analysis.
#
# @param $self - Eulerian Data Warehouse Peer Hook.
# @param $uuid - UUID of Eulerian Analytics Analysis.
# @param $rows - Array of Array of Columns values.
#
sub on_replace
{
my ( $self, $uuid, $rows ) = @_;
my $string = '';
for my $row ( @$rows ) {
for my $col ( @$row ) {
$string .= defined( $col ) ? "$col | " : "NULL | ";
}
$string .= "\n";
}
print( $string );
}
#
# @brief Analysis progression callback.
#
# @param $self - Eulerian Data Warehouse Peer Hook.
# @param $uuid - UUID of Eulerian Analytics Analysis.
# @param $progress - Progression value.
#
sub on_progress
{
my ( $self, $uuid, $progress ) = @_;
print( "PROGRESSION : $progress\n" );
return $self;
}
#
# @brief End of Eulerian Data Warehouse Analysis.
#
# @param $self - Eulerian Data Warehouse Peer Hook.
# @param $uuid - UUID of Eulerian Analytics Analysis.
# @param $token - AES Token or Bearer.
# @param $errnum - Error number.
# @param $err - Error description.
lib/API/Eulerian/EDW/Hook/Print.pm view on Meta::CPAN
#
sub on_status
{
my ( $self, $uuid, $token, $errnum, $err, $updated ) = @_;
# my $string = <<string_end;
# $uuid : {
# error_code => $errnum,
# error_msg => $err,
# }
#string_end
#print( $string );
return $self;
}
#
# Endup module properly
#
1;
lib/API/Eulerian/EDW/Parser/JSON.pm view on Meta::CPAN
end_object => sub
{
my $parent = $in[ $depth - 1 ] if $depth > 0;
if( ref( $parent ) eq 'ARRAY' ) {
$parent->[ scalar( @$parent ) ] = $in[ $depth ];
} elsif( ref( $parent ) eq 'HASH' ) {
$parent->{ $key } = $in[ $depth ];
}
if( $depth == 1 ) {
$msg = $in[ $depth ];
#print( Dumper( $msg ) . "\n" ); die "";
$uuid = $msg->{ uuid };
print( "UUID : $uuid\n" );
$hooks->on_headers(
$uuid, $msg->{ from }, $msg->{ to },
$msg->{ schema }
);
}
$depth--;
},
# Array begin
start_array => sub
{
lib/API/Eulerian/EDW/Peer.pm view on Meta::CPAN
$dump .= 'Ports : ' . $ports . "\n" if $ports;
$dump .= 'Class : ' . $self->class() . "\n";
$dump .= 'Kind : ' . $self->kind() . "\n";
$dump .= 'Platform : ' . $self->platform() . "\n";
$dump .= 'Hook : ' . $hook . "\n";
$dump .= 'Token : ' . $self->token() . "\n";
$dump .= 'Grid : ' . $self->grid() . "\n";
$dump .= 'Secure : ' . $secure . "\n";
$dump .= 'Ip : ' . $self->ip() . "\n";
print( $dump );
return $self;
}
#
# @brief Get Authorization bearer value from Eulerian Authority Services.
#
# @param $self - Eulerian Data Warehouse Peer.
#
# @return API::Eulerian::EDW::Status. On success a new entry 'bearer' is inserted into
# the Status.
#
lib/API/Eulerian/EDW/Peer/Rest.pm view on Meta::CPAN
# @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.
#
sub url
lib/API/Eulerian/EDW/Peer/Rest.pm view on Meta::CPAN
# 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";
}
}
}
return $status;
}
#
# @brief Parse local file path and invoke hook handlers.
#
lib/API/Eulerian/EDW/Peer/Rest.pm view on Meta::CPAN
$status = $self->download( $status );
$bench->stage( 'download' );
if( ! $status->error() ) {
# Parse reply file, call hooks
$bench->start();
$status = $self->parse( $status );
$bench->stage( 'parse' );
}
$status->{ bench } = $bench;
} else {
print "ERROR : " . Dumper( $status ) . "\n";
}
return $status;
}
#
# @brief Cancel Job on Eulerian Data Warehouse Platform.
#
# @param $self - API::Eulerian::EDW::Rest instance.
# @param $rc - Reply context.
#
lib/API/Eulerian/EDW/Peer/Thin.pm view on Meta::CPAN
#
# @brief Dump Eulerian Data Warehouse Peer setup.
#
# @param $self - Eulerian Data Warehouse Peer.
#
sub dump
{
my $self = shift;
my $dump = "\n";
$self->SUPER::dump();
print( $dump );
}
#
# @brief Get remote URL to Eulerian Data Warehouse Platform.
#
# @param $self - Eulerian Data Warehouse Peer.
#
# @return Remote URL to Eulerian Data Warehouse Platform.
#
sub url
{
lib/API/Eulerian/EDW/Peer/Thin.pm view on Meta::CPAN
my $rows = $json->{ rows };
switch( $type ) {
case 'add' {
$hook->on_add( $json->{ uuid }, $json->{ rows } );
}
case 'replace' {
$hook->on_replace( $json->{ uuid }, $json->{ rows } );
}
case 'headers' {
#print Dumper( $json ) . "\n";
$self->{ uuid } = $uuid;
$hook->on_headers(
$json->{ uuid }, $json->{ timerange }->[ 0 ],
$json->{ timerange }->[ 1 ], $json->{ columns }
);
}
case 'progress' {
$hook->on_progress(
$json->{ uuid }, $json->{ progress }
);
lib/API/Eulerian/EDW/Status.pm view on Meta::CPAN
{
my ( $self ) = @_;
my $error = $self->error() ? 'Yes' : 'No';
my $code = $self->code();
my $msg = $self->msg();
my $string = <<string_end;
Error : $error
Code : $code
Message : $msg
string_end
print( $string );
}
#
# End up perl module properly
#
1;
__END__
=pod
lib/API/Eulerian/EDW/WebSocket.pm view on Meta::CPAN
#
# @brief On error Websocket handler.
#
# @param $self - Websocket.
#
# @return
#
sub _on_error
{
my ( $self, $error ) = @_;
print STDERR "Websocket error : $error\n";
}
#
# @brief On connect Websocket handler.
#
# @param $self - Websocket.
#
# @return
#
sub _on_connect
{