BrandMeister-API
view release on metacpan or search on metacpan
lib/BrandMeister/API.pm view on Meta::CPAN
use strict;
package BrandMeister::API;
use LWP::UserAgent;
use HTTP::Request::Common;
use JSON;
use MIME::Base64;
#use LWP::ConsoleLogger::Everywhere ();
#use Data::Dumper;
=head1 NAME
BM::API - Use the BM API from Perl
=head1 SYNOPSIS
Implementation of the BM API in Perl.
=head1 AUTHOR
Simon (G7RZU) <simon@gb7fr.org.uk>
=cut
use vars qw($VERSION);
#Define version
$VERSION = '0.3';
=head1 METHODS
=head2 new
my($bmobj) = BrandMeister::API->new({
BM_APIKEY => '<api key>',
DMRID => '<id>',
});
=cut
sub new {
my($class) = shift;
my($self) = shift;
if (!exists($self->{BM_APIKEY}) || !exists($self->{DMRID})) {
return(0);
}
$self->{BM_APIBASEURL} = "https://api.brandmeister.network/v1.0/repeater/";
$self->{BM_APIKEYBASE64} = encode_base64($self->{BM_APIKEY}.':');
bless($self,$class);
return($self);
};
sub _build_request {
my($self) = shift;
#my($json) = shift;
my($requrlpart) = shift;
my($formdataref) = shift;
my($uri) = $self->{BM_APIBASEURL}.$requrlpart;
print("Building HTTP request\n") if($self->{DEBUG});
my($req);
if ($formdataref) {
$req = HTTP::Request::Common::POST( $uri,$formdataref);
} else {
$req = HTTP::Request::Common::POST( $uri);
};
$req->header( 'Content-Type' => 'application/x-www-form-urlencoded',
'Authorization'=>'Basic ' . $self->{BM_APIKEYBASE64}
);
#$req->content( $json );
return($req);
};
sub _send_request {
my($self) = shift;
my($req) = shift;
return(1) if (!$req);
my($ua) = LWP::UserAgent->new;
my($jsonresobj) = JSON->new;
my($res) = $ua->request($req);
print('Request status line: '.$res->status_line."\n") if($self->{DEBUG}) ;
if (!$res->is_success) {
return($res->status_line);
};
$self->{_JSONRESPONSEREF} = $jsonresobj->decode($res->decoded_content);
return(0);
};
=head2 json_response
Returns a hash ref to the last JSON response or undef if there is none
$jsonhashref = $jsonobj->json_response;
=cut
sub json_response {
my($self) = shift;
print("Return JSON response\n") if($self->{DEBUG});
return($self->{_JSONRESPONSEREF});
};
sub _do_action {
my($self) = shift;
my($requrlpart) = shift;
my($formdataref) = shift;
my($req) = $self->_build_request($requrlpart,$formdataref);
my($res) = $self->_send_request($req);
return($res);
};
sub _action {
my($self) = shift;
my($action) = shift;
my($reqaction);
my($formdataref);
my($ts,$tg) = @_;
if ($action eq 'delstatic') {
$reqaction = 'talkgroup/?action=DEL&id='.$self->{DMRID};
$formdataref = [
( run in 1.049 second using v1.01-cache-2.11-cpan-39bf76dae61 )