API-Eulerian
view release on metacpan or search on metacpan
lib/API/Eulerian/EDW/Bench.pm view on Meta::CPAN
# @brief Allocate and initialize a new API::Eulerian::EDW::Bench instance.
#
# @param $class - API::Eulerian::EDW::Bench class.
#
# @return API::Eulerian::EDW::Bench instance.
#
sub new
{
return bless( {
_SUITE => {},
_LAST => undef,
_FIRST => undef,
}, shift );
}
#
# @brief Start chronograph.
#
# @param $self - API::Eulerian::EDW::Bench instance.
#
sub start
{
shift->last( new API::Eulerian::EDW::Chrono() );
lib/API/Eulerian/EDW/Parser/JSON.pm view on Meta::CPAN
$parent->[ scalar( @$parent ) ] = shift;
} elsif( ref( $parent ) eq 'HASH' ) {
$parent->{ $key } = shift;
}
},
# Null
add_null => sub
{
my $parent = $in[ $depth ];
if( ref( $parent ) eq 'ARRAY' ) {
$parent->[ scalar( @$parent ) ] = undef;
} elsif( ref( $parent ) eq 'HASH' ) {
$parent->{ $key } = undef;
}
},
# Object begin
start_object => sub
{
$in[ ++$depth ] = {};
},
# Object end
end_object => sub
{
lib/API/Eulerian/EDW/Peer.pm view on Meta::CPAN
#
sub new
{
my $proto = shift();
my $class = ref($proto) || $proto;
my $setup = shift() || {};
return bless({
_CLASS => $class,
_KIND => 'access',
_PLATFORM => 'fr',
_HOOKS => undef,
_TOKEN => undef,
_GRID => undef,
_HOST => undef,
_PORTS => [ 80, 443 ],
_SECURE => 1,
_IP => undef
});
}
#
# @brief Class attribute getter.
#
# @param $self - Eulerian Data Warehouse Peer.
#
# @return Eulerian Data Warehouse Peer Class name.
#
lib/API/Eulerian/EDW/Peer.pm view on Meta::CPAN
# @param $self - Eulerian Data Warehouse Peer.
#
sub dump
{
my ( $self ) = @_;
my $hook = $self->hook() ? 'Set' : 'Unset';
my $secure = $self->secure() ? 'True' : 'False';
my $ports = $self->ports();
my $dump = "\n";
$ports = $ports ? $ports->[ 0 ] . ',' . $ports->[ 1 ] : undef;
$dump .= 'Host : ' . $self->host() . "\n" if $self->host();
$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";
lib/API/Eulerian/EDW/Peer/Rest.pm view on Meta::CPAN
$platform = $self->platform();
$host = $self->host();
if( $host ) {
$url .= $host . ':';
$url .= $self->ports()->[ $self->secure() ];
} elsif( $platform eq 'fr' ) {
$url .= 'edw.ea.eulerian.com';
} elsif( $platform eq 'ca' ) {
$url .= 'edw.ea.eulerian.ca';
} else {
$url = undef;
}
return $url;
}
#
# @brief Get HTTP Request Body used to send command to Eulerian Data Warehouse
# Platform.
#
# @param $self - Eulerian Data Warehouse Rest Peer.
# @param $command - Eulerian Data Warehouse Command.
lib/API/Eulerian/EDW/Peer/Rest.pm view on Meta::CPAN
#
sub body
{
my ( $self, $command ) = @_;
$command =~ s/\n//gm;
return JSON::encode_json({
kind => 'edw#request',
query => $command,
creationTime => POSIX::strftime( '%d/%m/%Y %H:%M:%S', gmtime() ),
location => Sys::Hostname::hostname(),
expiration => undef,
});
};
#
# @brief Setup HTTP Request Headers.
#
# @param $self - Eulerian Data Warehouse Peer.
#
# @return HTTP Headers.
#
sub headers
lib/API/Eulerian/EDW/Request.pm view on Meta::CPAN
# @brief Get JSON object from HTTP response.
#
# @param $class - API::Eulerian::EDW::Request class.
# @param $response - HTTP response.
#
# @return JSON object.
#
sub json
{
my ( $class, $response ) = @_;
my $data = undef;
if( $class->is_json( $response ) ) {
$data = $response->decoded_content;
if( defined( $data ) ) {
chomp( $data );
if( length( $data ) > 0 ) {
$data = encode( 'utf-8', $data );
$data = decode_json( $data );
} else {
$data = undef;
}
}
}
return $data;
}
#
# @brief Do HTTP Get on given URL.
#
# @param $class - API::Eulerian::EDW::HTTP class.
# @param $url - Remote URL.
# @param $headers - HTTP::Headers.
# @param $file - Local file path.
#
# @return API::Eulerian::EDW::Status instance.
#
sub get
{
my ( $class, $url, $headers, $file ) = @_;
return $class->_request( 'GET', $url, $headers, undef, undef, $file );
}
#
# @brief Do HTTP Post on given URL.
#
# @param $class - API::Eulerian::EDW::HTTP class.
# @param $url - Remote URL.
# @param $headers - HTTP::Headers.
# @param $what - Request Data.
# @param $type - Request Data Type.
#
lib/API/Eulerian/EDW/WebSocket.pm view on Meta::CPAN
# @param $class - API::Eulerian::EDW::WebSocket class.
# @param $host - Remote host.
# @param $port - Remote port.
#
# @return API::Eulerian::EDW WebSocket instance.
#
sub new
{
my ( $class, $host, $port ) = @_;
return bless( {
_HOOK => undef,
_SELECT => undef,
_RFDS => undef,
_SOCKET => IO::Socket::INET->new(
PeerAddr => $host, PeerPort => $port,
Blocking => 1, Proto => 'tcp'
),
}, $class
);
}
#
# @brief Get Socket.
#
lib/API/Eulerian/EDW/WebSocket.pm view on Meta::CPAN
$peer->connect;
# If connected
if( defined( $socket->connected ) ) {
for(; defined( $socket ); ) {
$read = $socket->sysread( $buf, $bufsize, $offset );
if( $read > 0 ) {
$peer->read( $buf );
} else {
close( $socket );
undef( $socket );
last;
}
}
}
# Disconnect from remote host
$peer->disconnect;
return $status;
}
( run in 3.162 seconds using v1.01-cache-2.11-cpan-d80b1682f3f )