Finance-GDAX-API/lib/Finance/GDAX/API/Quote.pm
package Finance::GDAX::API::Quote;
our $VERSION = '0.01';
use 5.20.0;
use warnings;
use Moose;
use JSON;
use REST::Client;
use Finance::GDAX::API::URL;
use namespace::autoclean;
=head1 NAME
Finance::GDAX::API::Quote - Get a quote from the GDAX
=head1 SYNOPSIS
use Finanace::GDAX::API::Quote;
my $quote = Finance::GDAX::API::Quote->new(product => 'BTC-USD')->get;
say $$quote{price};
say $$quote{bid};
say $$quote{ask};
=head1 DESCRIPTION
Gets a quote from the GDAX for the specified "product". These quotes
do not require GDAX API keys, but they suggesting keeping traffic low.
More detailed information can be retrieve about products and history
using API keys with other classes like Finance::GDAX::API::Product
Currently, the supported products are:
BTC-USD
BTC-GBP
BTC-EUR
ETH-BTC
ETH-USD
LTC-BTC
LTC-USD
ETH-EUR
These are not hard-coded, but the default is BTC-USD, so if any are
added by GDAX in the future, it should work find if you can find the
product code.
Quote is returned as a hashref with the (currently) following keys:
trade_id
price
size
bid
ask
volume
time
=head1 ATTRIBUTES
=head2 C<debug> (default: 1)
Bool that sets debug mode (will use sandbox). Defaults to true
(1). Debug mode does not seem to give real quotes.
=head2 C<product> (default: "BTC-USD")
The product code for which to return the quote.
=cut
has 'product' => (is => 'rw',
isa => 'Str',
default => 'BTC-USD',
);
has 'debug' => (is => 'rw',
isa => 'Bool',
default => 1,
);
=head1 METHODS
=head2 C<get>
Returns a quote for the desired product.
=cut
sub get {
my $self = shift;
my $url = Finance::GDAX::API::URL->new;
$url->debug($self->debug);
$url->add('products');
$url->add($self->product);
$url->add('ticker');
my $client = REST::Client->new;
$client->GET($url->get);
my $json = JSON->new;
return $json->decode($client->responseContent);
}
__PACKAGE__->meta->make_immutable;
1;
=head1 AUTHOR
Mark Rushing <mark@orbislumen.net>
=head1 COPYRIGHT AND LICENSE
This software is copyright (c) 2017 by Home Grown Systems, SPC.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
=cut