Net-Dynect-REST version 0.01
============================

Dynect.net is a provider of hosted DNS services. They offer a /two/ 
APIs for interacting with their service at this stage - REST and SOAP. 
This set of modules attempts to implement (some of) the REST interface.

BASE MODULES
------------
There are three base modules to use:
  Net::Dynect::REST - will hold your session information (Auth Token)
  Net::Dynect::REST::Request - will format a request and parameters
  Net::Dynect::REST::Response - will decode the response

To use these, instantiate the Net::Dynect::REST with your security 
credentials. Then create a request object, and pass  it to the 
Net::Dynect::REST->execute() method, and you should get a 
return value of Net::Dynect::REST::Response.

  my $dynect = Net::Dynect::REST->new(user_name => 'me', 
				      customer_name => 'my_company', 
				      password => 'my_secret');
  my $request = Net::Dynect::REST::Request->new(..your params..);
  my $response = $dynect->execute($request);
  .. time passes... you do work...
  $dynect->logout;



ASBTRCTION
----------
Then there are a set of higher level abstractions modules:
  Net::Dynect::REST::Zone - a DNS Zone
  Net::Dynect::REST::ZoneChanges - the pending changes
  Net::Dynect::REST::ARecord - an (IPv4) Address resource record
  ....

To use these, you need to:
  1. Create your Net::Dynect::REST session as above.
  2. Create your asbtration object, such as "Zone", and pass it your 
     Net::Dynect::REST.
  3. Use the methods on the abstraction object to do what you want 
     (add/remove/delete).
  4. If you're happy with all your changes, then you need to load your 
     Zone (if you hadn't already) and use the 'publish' method.

For example:
  my $dynect = Net::Dynect::REST->new(user_name => 'me', 
				      customer_name => 'my_company', 
				      password => 'my_secret');
  my $zone = Net::Dynect::REST::Zone->new(connection => $dynect,
					  zone => 'example.com');
  my @addresses = Net::Dynect::REST::ARecord->find(connection => $dynect,
					zone => 'example.com',
				        fqdn => 'foo.example.com');
  foreach (@addresses) {
    printf "foo.example.com = %s\n", $_->rdata->address;
  }

INSTALLATION

To install this module type the following:

   perl Makefile.PL
   make
   make test
   make install

DEPENDENCIES

This module requires these other modules and libraries:

  LWP - the Perl web library
  Carp - for various wanrings, normally already in your base Perl
  JSON - for encoding and decoding data

THANKS

This is only possible thanks to LWP, JSON, some inspiraction from DBI 
(Tim Bunce), general inspiration over the years from Acme (Léon 
Brocard), a random post from Mark Stosberg on the CGIAPP mailing list.
Also, thanks to NetShelter and Dynect.

COPYRIGHT AND LICENCE

Copyright (C) 2010 by James Bromberger

This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself, either Perl version 5.10.1 or,
at your option, any later version of Perl 5 you may have available.


