NAME
Net::Joker::DMAPI - interface to Joker's Domain Management API
DESCRIPTION
An attempt at a sane wrapper around Joker's DMAPI (domain management
API).
Automatically logs in, and parses responses into something a bit more
usable as much as possible.
SYNOPSIS
my $dmapi = Net::Joker::DMAPI->new(
username => 'bob@example.com',
password => 'hunter2',
);
# Get whois details for a domain - returns parsed data structure
my $whois_details = $dmapi->query_whois({ domain => $domain });
my @nameservers = @{ $whos_details->{domain}{nameservers} };
# can also use query_whois on contact handles
my $admin_handle_details = $dmapi->query_whois(
{ contact => $whois_details->{domain}{admin_c} }
);
my $current_balance = $dmapi->current_balance;
my $tlds = $dmapi->available_tlds;
ATTRIBUTES
username
Your Joker account username.
password
Your Joker account password
debug
Whether to omit debug messages; disabled by default, set to a true
value to enable. See also the `logger' attribute to which you can
provide a coderef which will be called with messages. If `debug' is
true, all messages will be output to STDOUT as well as passed to the
`logger' coderef (if provided).
logout_on_destroy
End the Joker session upon object destruction, 1 by default.
ua An LWP::UserAgent object to use. One is constructed by default, so
you don't need to supply this unless you have a specific need to do
so.
dmapi_url
The URL to Joker's DMAPI. You won't need to provide this unless you
for some reason need to have requests go elsewhere; it defaults to
Joker's live DMAPI URL.
balance
The current balance of your Joker account; automatically updated
each time a response from the Joker API is received.
available_tlds_list
An arrayref of TLDs which are available to the reseller. Joker
return this in response to the login call, so this is populated
after login; it's recommended you access it via the `available_tlds'
method (see below) though, which will call `login' for you first
then return the list.
logger
A coderef to be used to log interactions with Joker; if this is
defined, the coderef provided is called with the log messages, so
you can log them however your application usually does.
The coderef will be called with two parameters - the log level
(`debug', `info', `error'), and the message.
METHODS
login
Logs in to the Joker DMAPI, retrieves the `Auth-Sid' from the
response, and stores it in the `auth_sid' attribute for future
requests. You won't usually need to call this, as it will happen
automatically if you use the convenience methods, but if you want to
poke at `do_request' yourself, you'll need it.
do_request
Takes the method name you want to call, and a hashref of arguments,
calls the method, and returns the response.
For instance:
my $response = $dmapi->do_request('query-whois', { domain => $domain });
The response returned is as given by Joker's (inconsistent) API,
though; so you'll probably want to look for a suitable method in
this class which takes care of parsing the response and returning
something useful. If a method for the DMAPI method you wish to use
doesn't yet exist, contact me or submit a patch :) In particular,
some requests don't return the result, just an ID which you'll then
need to use to poll for the result.
available_tlds
Returns the list of TLDs which are available to the reseller to
sell.
account_balance
Returns the current balance of your Joker account. The `balance'
attribute is automatically updated after every API call; this method
is simply provided to ensure you're logged in and return the balance
- useful if you want to monitor the balance from a Nagios plugin,
say, rather than just seeing what the balance was after making
another API call.
query_whois
A convenient method to call the DMAPI `query_whois' method, and
return the response after parsing it into something useful.
my $whois = $dmapi->query_whois({ domain => $domain });
The DMAPI accepts `domain', `contact' or `host', to look up domains,
contact handles or nameservers respectively.
The response is parsed into a data structure - for instance, the
domain's status, which is returned by Joker as `domain.status', will
be found at `$whois-'{domain}{status}>. Nameservers are collated
into a hashref. Datetimes returned by Joker are automatically
inflated to DateTime objects.
expiry_date
Returns the expiry date for the given domain.
my $expires_datetime = $dmapi->expiry_date($domain);
AUTHOR
David Precious `'
ACKNOWLEDGEMENTS
Tomasz Czepiel (@tczepiel)
BUGS / FEATURE REQUESTS
If you've found a bug, or have a feature request or wish to contribute a
patch, this module is developed on GitHub - please feel free to raise
issues or pull requests against the repo at:
https://github.com/bigpresh/Net-Joker-DMAPI
LICENSE AND COPYRIGHT
Copyright 2014 David Precious.
This program is free software; you can redistribute it and/or modify it
under the terms of either: the GNU General Public License as published
by the Free Software Foundation; or the Artistic License.
See http://dev.perl.org/licenses/ for more information.
SEE ALSO
Joker's DMAPI documentation is at:
https://joker.com/faq/category/39/22-dmapi.html
WWW::Domain::Registry::Joker is another module for talking to Joker's
DMAPI, but hasn't been updated for some time and doesn't provide any
convenient methods or parsing of responses, just the basics.