#! /usr/bin/perl #--------------------------------------------------------------------- # nfsn.pl # Copyright 2010 Christopher J. Madsen # # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See either the # GNU General Public License or the Artistic License for more details. # # Simple client script for using the NFSN API #--------------------------------------------------------------------- use strict; use warnings; # RECOMMEND PREREQ: Data::Dumper use Data::Dumper; use Try::Tiny; use WebService::NFSN; my ($type, $id, $command, @parameters) = @ARGV; die <<"" unless defined $command; Usage: $0 TYPE ID COMMAND [PARAMETERS...]\n Reads credentials from .nfsn-api\n Examples: $0 account A1B2-C3D4E5F6 balance $0 account A1B2-C3D4E5F6 friendlyName NewName $0 dns example.com listRRs name www $0 dns example.com addRR name bob type A data 10.0.0.5 $0 email example.com forward name dest_email 'to\@example.net' $0 member USER accounts $0 site SHORT_NAME addAlias alias www.example.com my $nfsn = WebService::NFSN->new; # Load credentials from ~/.nfsn-api die "Unknown type $type\n" unless $nfsn->can($type); my $obj = $nfsn->$type($id); die "Unknown command $command\n" unless $obj->can($command); my $result = try { $obj->$command(@parameters); } catch { my $res = $nfsn->last_response; print STDERR $res->as_string . "\n" if $res; die $_; }; $Data::Dumper::Indent = 1; $Data::Dumper::Sortkeys = 1; $Data::Dumper::Terse = 1; print Dumper($result);