DNS-NIOS
view release on metacpan or search on metacpan
lib/DNS/NIOS.pm view on Meta::CPAN
return $self->__request( 'POST', $args{path},
( payload => $args{payload}, params => $args{params} ) );
}
sub update {
my ( $self, %args ) = @_;
defined( $args{$_} )
or croak("$_ is required!")
for qw(path payload);
return $self->__request( 'PUT', $args{path},
( payload => $args{payload}, params => $args{params} ) );
}
sub get {
my ( $self, %args ) = @_;
defined( $args{path} )
or croak("path is required!");
return $self->__request( 'GET', $args{path}, ( params => $args{params} ) );
}
sub delete {
my ( $self, %args ) = @_;
defined( $args{path} )
or croak("path is required!");
return $self->__request( 'DELETE', $args{path}, ( params => $args{params} ) );
}
sub __request {
my ( $self, $op, $path, %args ) = @_;
my $payload = delete $args{payload};
my $params = delete $args{params};
my $query_params = q{};
grep( /(^\Q$op\E$)/, qw(GET POST PUT DELETE) )
or die("invalid operation: $op");
croak("invalid path") unless ( defined $path and length $path );
if ( $op eq 'PUT' or $op eq 'POST' ) {
croak("invalid payload") unless keys %{$payload};
}
if ( defined $params ) {
my $u = URI->new( q{}, 'http' );
$query_params = q{?};
foreach ( keys %{$params} ) {
$u->query_param( $_ => $params->{$_} );
}
$query_params .= $u->query;
}
my $request =
HTTP::Request->new( $op, $self->{base_url} . $path . $query_params );
if ( $op eq 'PUT' or $op eq 'POST' ) {
$request->content( to_json($payload) );
}
return DNS::NIOS::Response->new(
_http_response => $self->{ua}->request($request) );
}
1;
__END__
=pod
=encoding UTF-8
=head1 NAME
DNS::NIOS - Perl binding for NIOS
=head1 VERSION
version 0.005
=head1 SYNOPSIS
# Read below for a list of options
my $n = NIOS->new(
username => "username",
password => "password",
wapi_addr => "10.0.0.1",
);
$x = $n->get(
path => 'record:a',
params => {
_paging => 1,
_max_results => 1,
_return_as_object => 1
}
);
say $x->content->{result}[0]->{_ref};
=head1 DESCRIPTION
Perl bindings for L<https://www.infoblox.com/company/why-infoblox/nios-platform/>
=head2 Normal usage
Normally, you will add some traits to the client, primarily L<DNS::NIOS::Traits::ApiMethods>
since it provides methods for some endpoints.
=head2 Minimal usage
Without any traits, DNS::NIOS provides access to all API endpoints using the methods described below.
=head1 CONSTRUCTOR
( run in 0.944 second using v1.01-cache-2.11-cpan-5a3173703d6 )