Binance-API

 view release on metacpan or  search on metacpan

lib/Binance/API.pm  view on Meta::CPAN

use Binance::Exception::Parameter::Required;

our $VERSION = '1.09';

=head1 NAME

Binance::API -- Perl implementation for Binance API

=head1 DESCRIPTION

This module provides a Perl implementation for Binance API

Binance API documentation: C<https://github.com/binance-exchange/binance-official-api-docs/blob/master/rest-api.md>.

ENUM definitions:
https://github.com/binance-exchange/binance-official-api-docs/blob/master/rest-api.md#enum-definitions

=head1 SYNOPSIS

    use Binance::API;

    my $api = Binance::API->new(
        apiKey    => 'my_api_key',
        secretKey => 'my_secret_key',
    );

    my $ticker = $api->ticker( symbol => 'ETHBTC' );

=head1 METHODS

=cut

=head2 new

    my $api = Binance::API->new(
        apiKey    => 'my_api_key',
        secretKey => 'my_secret_key',
    );

Instantiates a new C<Binance::API> object

B<PARAMETERS>

=over

=item apiKey

[OPTIONAL] Your Binance API key.

=item secretKey

[OPTIONAL] Your Binance API secret key.

=item recvWindow

[OPTIONAL] Number of milliseconds the request is valid for. Applies only in
signed requests.

=item baseUrl

[OPTIONAL] Base URL of Binance endpoint.

=item logger

[OPTIONAL] See L<Binance::API::Logger/new>

=back

B<RETURNS>

A C<Binance::API> object.

=cut

sub new {
    my ($class, %params) = @_;

    my $logger = Binance::API::Logger->new($params{logger});

    my $ua = Binance::API::Request->new(
        apiKey     => $params{apiKey},
        secretKey  => $params{secretKey},
        recvWindow => $params{recvWindow},
        baseUrl    => $params{baseUrl},
        logger     => $logger,
    );

    my $self = {
        ua         => $ua,
        logger     => $logger,
    };

    bless $self, $class;
}

=head2 ping

    $api->ping();

Test connectivity to the Rest API

B<PARAMETERS>

=over

=item Takes no parameters.

=back


B<RETURNS>
1 if successful, otherwise 0

=cut

sub ping {
    return keys %{$_[0]->ua->get('/api/v3/ping')} == 0 ? 1 : 0;
}

=head2 time

lib/Binance/API.pm  view on Meta::CPAN

=head2 delete_user_data_stream

    $api->delete_user_data_stream();

Close out a user data stream.

B<PARAMETERS>

=over

=item listenKey

[REQUIRED]

=back

B<RETURNS>
    An empty HASHref

    {}

=cut

sub delete_user_data_stream {
    my ($self, %params) = @_;
    unless ($params{'listenKey'}) {
        $self->log->error('Parameter "listenKey" required');
        Binance::Exception::Parameter::Required->throw(
            error => 'Parameter "listenKey" required',
            parameters => ['listenKey']
        );
    }
    my $query = {
        listenKey  => $params{'listenKey'},
    };
    return $self->ua->delete('/api/v3/userDataStream', { query => $query } );
}

=head2 log

    $api->log->warn("This is a warning");

B<PARAMETERS>

=over

=item Takes no parameters.

=back

B<RETURNS>

An instance of L<Binance::API::Logger>.

=cut

sub log { return $_[0]->{logger}; }

=head2 ua

    $api->ua->get('/binance/endpoint');

B<PARAMETERS>

=over

=item Takes no parameters.

=back

B<RETURNS>

An instance of L<Binance::API::Request>.

=cut

sub ua  { return $_[0]->{ua}; }

1;



( run in 0.848 second using v1.01-cache-2.11-cpan-39bf76dae61 )