WWW::Domain::Registry::VeriSign - VeriSign NDS (https://www.verisign-grs.com/) Registrar Tool


WWW-Domain-Registry-VeriSign documentation Contained in the WWW-Domain-Registry-VeriSign distribution.

Index


Code Index:

NAME

Top

WWW::Domain::Registry::VeriSign - VeriSign NDS (https://www.verisign-grs.com/) Registrar Tool

SYNOPSIS

Top

  use WWW::Domain::Registry::VeriSign;
  use Data::Dumper;

  my $reg = WWW::Domain::Registry::VeriSign->new('id', 'password');
  $reg->login;
  my $res = $reg->account_view_page;
  print Dumper $res;

DESCRIPTION

Top

WWW::Domain::Registry::VeriSign uses WWW::Mechanize to scrape VeriSign NDS (https://www.verisign-grs.com/).

SEE ALSO

Top

WWW::Mechanize

AUTHOR

Top

Masahito Yoshida <masahito@cpan.org>

COPYRIGHT AND LICENSE

Top


WWW-Domain-Registry-VeriSign documentation Contained in the WWW-Domain-Registry-VeriSign distribution.

package WWW::Domain::Registry::VeriSign;

use strict;
use base qw/Class::Accessor/;
use warnings;
use Carp;
use WWW::Mechanize;

__PACKAGE__->mk_accessors(qw(mech));

our $VERSION = '0.02';

sub new {
    my ($class, $id, $password) = @_;
    my $self = bless {}, $class;
    $self->{reg} = {
                    base => 'https://nsmanager.verisign-grs.com',
                    id => $id,
                    password => $password,
                };
    $self->mech(WWW::Mechanize->new);
    $self;
}

sub login {
    my $self = shift;
    $self->mech->get($self->{reg}->{base} .'/ncc/login_page.do');
    $self->mech->submit_form(
                               form_number => 1,
                               fields => {
                                          logonname     => $self->{reg}->{id},
                                          logonpassword => $self->{reg}->{password},
                                      }
                           );
    $self->parse_login($self->mech->content);
}

sub parse_login {
    my ($self, $content) = @_;
    $content =~ m/currently logged in/;
}

sub account_view_page {
    my $self = shift;
    $self->mech->get($self->{reg}->{base} .'/ncc/account_view_page.do?MENU=Accounts');
    $self->parse_account_view_page($self->mech->content);
}

sub parse_account_view_page {
    my ($self, $content) = @_;
    my $content_from = qq(<div class="content">);
    my $content_till = qq(</div>);
    return unless $content =~ /$content_from(.*?)$content_till/s;;
    $content = $1;
    my $data;
    while ($content =~ m{<td class="alt3"[^>]*>([^:]+):</td>\n\s+<td class="alt4"[^>]*>([^<]+)</td>\n}ig) {
        my($key, $val) = ($1, $2);
        $val =~ s/&nbsp;?/ /g;
        $val =~ s/^\s+//;
        $val =~ s/\s+$//;
        $val =~ s/\n+/\n/g;
        $data->{lc($key)} = $val =~ m/\n/ ? [ split m/\n/ , $val ] : $val;
    }

    return $data;
}

sub credit_balance_view_page {
    my $self = shift;
    $self->mech->get($self->{reg}->{base} .'/ncc/credit_balance_view_page.do?MENU=Finance');
    $self->parse_credit_balance_view_page($self->mech->content);
}

*parse_credit_balance_view_page = \&parse_account_view_page;

# Preloaded methods go here.

1;
__END__