Mojo-Zabbix
view release on metacpan or search on metacpan
lib/Mojo/Zabbix.pm view on Meta::CPAN
'user', 'login',
{
user => $self->{User},
password => $self->{Password},
}
);
#confess $res->{error}->{data}
warn "$res->{error}->{data}\nError Code: $res->{error}->{code}
\nResponse: $res->{error}->{message}"
if defined $res->{error};
#print "$res->{error}";
$self->{Password} = '***';
$self->{Auth} = $res->{result};
}
elsif ( $self->{Auth} eq '' ) {
return (); # empty for first auth call
}
return $self->{Auth} unless defined wantarray;
return ( auth => $self->{Auth} );
}
sub next_id {
return ++shift->{'Count'};
}
sub int_debug {
my ( $self, $data ) = @_;
my $tempass;
if ( defined $data->{'params'}
and ref( $data->{'params'} ) eq 'HASH'
and exists $data->{'params'}->{'password'} )
{
$tempass = $data->{'params'}->{'password'};
$data->{'params'}->{'password'} = '******';
}
my $json = $self->{JSON}->encode($data);
$self->_dbgmsg( "TX: " . $json )
if $self->{Debug};
$data->{'params'}->{'password'} = $tempass
if ( ref( $data->{'params'} ) eq 'HASH'
and exists $data->{'params'}->{'password'} );
}
sub out_debug {
my ( $self, $data ) = @_;
my $json = $self->{JSON}->encode($data);
$self->_dbgmsg( "RX: " . $json )
if $self->{Debug};
}
sub get {
my ( $self, $object, $params ) = @_;
return $self->http_request( $object, "get", $params );
}
sub update {
my ( $self, $object, $params ) = @_;
return $self->http_request( $object, "update", $params );
}
sub delete {
my ( $self, $object, $params ) = @_;
return $self->http_request( $object, "delete", $params );
}
sub create {
my ( $self, $object, $params ) = @_;
return $self->http_request( $object, "create", $params );
}
sub exists {
my ( $self, $object, $params ) = @_;
return $self->http_request( $object, "exists", $params );
}
sub http_request {
my ( $self, $object, $op, $params ) = @_;
if ( $self->{Trace} ) {
$self->{_call_start} = [gettimeofday];
$self->_dbgmsg("Starting method $object.$op");
}
if ($params) {
$params->{output} = $self->{Output}
if ( reftype($params) eq 'HASH' and not defined $params->{output} and $object.$op ne "userlogin" );
}
else {
$params = [];
}
my $zrurl = "$self->{API_URL}/api_jsonrpc.php";
my $myjson = {
jsonrpc => "2.0",
method => "$object.$op",
params => $params,
id => $self->next_id,
( $self->auth ),
};
$self->int_debug($myjson) if $self->{Debug};
my $res = $self->ua->post( $zrurl, json => $myjson );
unless ( $res->success ) {
my $err = $res->error;
warn "$err->{code} response: $err->{message}" if $err->{code};
warn "Connection error: $err->{message}";
}
if ( $self->{Trace} ) {
$self->_dbgmsg("Finished method $object.$op");
$self->_dbgmsg( "Spent "
. tv_interval( $self->{_call_start} )
. "s on $object.$op" );
}
$self->out_debug( $res->res->json ) if $self->{Debug};
( run in 0.787 second using v1.01-cache-2.11-cpan-98e64b0badf )