NAME
WWW::LogicBoxes::Role::Command::Raw - Low Level Access to LogicBoxes API
SYNOPSIS
use WWW::LogicBoxes;
my $logic_boxes = WWW::LogicBoxes->new( ... );
my $response = $logic_boxes->domains__suggest_names({
'keyword' => 'car',
'tlds' => ['com', 'net', 'org'],
'no-of-results' => 10,
'hypehn-allowed'=> 'false',
'add-related' => 'true',
});
REQUIRES
DESCRIPTION
This role composes a series of methods into the consuming class (WWW::LogicBoxes) that directly expose methods of the LogicBoxes API. It is the lowest level of access to the LogicBoxes API and is intended only for the most advanced usages that are not covered by other commands.
NOTE You almost never want to make this low level of a call. You really should be looking at the commands to find the specific method to accomplish your goals.
METHODS
Methods are constructed by abstracting out the need to specify the HTTP method (POST or GET) and automagically building the request URI according to the documentation provided by LogicBoxes (see the Logic Boxes API user guide at http://manage.logicboxes.com/kb/answer/744 for additional information).
Method Naming
To fully understand the method names it's best to take a specific example (in this case the suggestion of domain names).
Suggest Domains (and many others)
my $response = $logic_boxes->domains__suggest_names({
'keyword' => 'car',
'tlds' => ['com', 'net', 'org'],
'no-of-results' => 10,
'hypehn-allowed'=> 'false',
'add-related' => 'true',
});
LogicBoxes' API states that this method is part of their HTTP API, specifically the Domain Category and more specifically the Suggest Names method. The sample URI for this request would then be:
https://test.httpapi.com/api/domains/suggest-names.json?auth-userid=0&auth-password=password&keyword=domain&tlds=com&tlds=net&no-of-results=0&hyphen-allowed=true&add-related=true
The method name is built using the URI that the request is expected at in a logical way. Since this method is a member of the Domains Category and is specifically Suggest Names we end up:
$logic_boxes->domains__suggest_names
Where everything before the first "__" is the category and everything following it is the specific method (with - replaced with _ and / replaced with __).
Arguments Passed to Methods
The specific arguments each method requires is not enforced by this module, rather it is left to the developer to reference the LogicBoxes API and to pass the correct arguments to each method as a hash. Again, this is a module of last resort, you should really be using the exposed Commands if at all posible.
There are two odd cases that you should be aware of with respect to the way arguments must be passed.
Repeated Elements
For methods such as domains__check that accept the same key multiple times:
https://test.httpapi.com/api/domains/available.json?auth-userid=0&auth-password=password&domain-name=domain1&domain-name=domain2&tlds=com&tlds=net
This module accepts a hash where the key is the name of the argument (such as domain-name) and the value is an array of values you wish to pass:
$logic_boxes->domains__available({
'domain-name' => ["google", "cnn"],
'tlds' => ["com","net"]
});
This is interpreted for you automagically into the repeating elements when the API's URI is built.
Array of Numbered Elements
For methods such as contacts__set_details that accept the same key multiple times except an incrementing digit is appended:
https://test.httpapi.com/api/contacts/set-details.json?auth-userid=0&auth-password=password&contact-id=0&attr-name1=sponsor1&attr-value1=0&product-key=dotcoop
This module still accepts a hash and leaves it to the developer to handle the appending of the incrementing digit to the keys of the hash:
$logic_boxes->contacts__set_details({
'contact-id' => 1337,
'attr-name1' => 'sponsor',
'attr-value1' => '0',
'attr-name2' => 'CPR',
'attr-value2' => 'COO',
'product-key' => 'dotcoop'
});
In this way you are able to overcome the need for unique keys and still pass the needed values onto LogicBoxes' API.