p5-cPanel-APIClient

CPAN’s cPanel::APIClient

1
2
1
Perl
public

NAME

cPanel::APIClient - cPanel APIs, à la TIMTOWTDI!

SYNOPSIS

Create a cPanel::APIClient::Service::cpanel object
to call cPanel APIs:

my $cpanel = cPanel::APIClient->create(
    service => 'cpanel',
    transport => [ 'CLISync' ],
);

my $resp = $cpanel->call_uapi( 'Email', 'list_pops' );

my $pops_ar = $resp->get_data();

Create a cPanel::APIClient::Service::whm object
to call WHM APIs:

my $whm = cPanel::APIClient->create(
    service => 'whm',
    transport => [ 'CLISync' ],
);

my $resp = $whm->call_api1( 'listaccts' );

my $accts_ar = $resp->get_data();

DESCRIPTION

cPanel & WHM exposes a number of ways to access its APIs: different transport
mechanisms, different authentication schemes, etc. This library provides
client logic with sufficient abstractions to accommodate most supported
access mechanisms via a unified interface.

This library intends to supersede cPanel::PublicAPI as the preferred way
to access cPanel & WHM’s APIs from Perl. It can also serve as a model for
similar client libraries in other languages.

FEATURES

  • Fully object-oriented.
  • Can use blocking or non-blocking I/O. Non-blocking I/O implementation
    works with almost any modern Perl event loop interface.
  • Uses minimal dependencies: no Moose &c.
  • Extensively tested.
  • Can run in pure Perl.

CHARACTER ENCODING

cPanel & WHM’s API is character-set-agnostic. All text that you give to this
library should thus be encoded to binary, and all strings that you’ll receive
back will be binary.

This means that if you character-decode your inputs—as perlunitut
recommends—then you’ll need to encode your strings back to bytes before
giving them to this module.

Use of UTF-8 encoding is strongly recommended!

FUNCTIONS

$client = cPanel::APIClient->create( %OPTS )

A factory function that creates a “client” object that your code can
use to call the APIs.

%OPTS are:

  • service - Required. The service that exposes the API(s) to call.
    This controls the class of the returned object. Recognized values are:

  • transport - Required. An array reference that describes the
    transport mechanism to use. The first member of this array names the mechanism;
    remaining arguments are key-value pairs of attributes to give to the
    mechanism class’s constructor.

    Currently supported mechanisms are:

    Which of the above to use will depend on your needs. If your application
    is local to the cPanel & WHM server you might find it easiest to use
    CLISync. For HTTP NetCurlPromiser offers the best flexibility
    and (probably) speed, whereas MojoUserAgent and HTTPSync can run in
    pure Perl (assuming you have Net::SSLeay).

    There currently is no documentation for how to create a 3rd-party transport
    mechanism (e.g., if you want to use a different HTTP library). Submissions
    via pull request will be evaluated on a case-by-case basis.

  • credentials - Some transports require this; others don’t.
    The recognized schemes are:

    • username & api_token - Authenticate with an API token
    • username & password - Authenticate with a password
    • username, password, & tfa_token - Authenticate with a
      password and two-factor authentication (2FA) token.
    • username only - Implicit authentication, only usable for local
      transports.

Depending on the service given, this function returns an instance of
either cPanel::APIClient::Service::cpanel or
cPanel::APIClient::Service::whm.

LICENSE

Copyright 2020 cPanel, L. L. C. All rights reserved. http://cpanel.net

This is free software; you can redistribute it and/or modify it under the
same terms as Perl itself. See perlartistic.

v0.3.3[beta]