Finance-Dogecoin
view release on metacpan or search on metacpan
lib/Finance/Dogecoin/API.pm view on Meta::CPAN
use Carp ();
use URI;
use JSON;
use HTTP::Headers;
use LWP::UserAgent;
use LWP::Protocol::https;
use URI::QueryParam;
has 'api_key', is => 'ro', required => 1;
has 'endpoint', is => 'ro', default => sub { 'https://www.dogeapi.com/wow/' };
has 'json', is => 'ro', default => sub {
my $j = JSON->new; $j->allow_nonref; $j
};
has 'ua', is => 'ro', default => sub {
my $headers = HTTP::Headers->new;
$headers->header( 'Content-Type' => 'application/json' );
LWP::UserAgent->new(
ssl_opts => { verify_hostname => 1 },
default_headers => $headers,
);
};
sub request {
my ($self, $method, %params) = @_;
# manually setting the 'a' parameter avoids a weird behavior in LWP::UA
# which uppercases 'a'--not what the API expects or wants
my $uri = URI->new( $self->endpoint );
$uri->query_param( a => $method );
while (my ($key, $value) = each %params) {
$uri->query_param( $key => $value );
}
my $response = $self->ua->get( $uri );
my $result = $self->json->decode( $response->decoded_content );
Carp::croak( "Bad API call from $method() call" ) if $result eq 'Bad Query';
( run in 1.178 second using v1.01-cache-2.11-cpan-2b1a40005be )