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 )