
WWW::DanDomain - class to assist in interacting with DanDomain admin interface

This documentation describes version 0.05

The module lets the user interact with DanDomains administrative web interface. This can be used for automating tasks of processing data exports etc.
use WWW::DanDomain;
#All mandatory parameters
#Please note DanDomain can be configured to use authorization on IP
#meaning authentication is unnessesary
my $wd = WWW::DanDomain->new({
url => 'http://www.billigespil.dk/admin/edbpriser-export.asp',
});
#With optional authentication credentials
my $wd = WWW::DanDomain->new({
username => 'topshop',
password => 'topsecret',
url => 'http://www.billigespil.dk/admin/edbpriser-export.asp',
});
#with verbosity enabled
my $wd = WWW::DanDomain->new({
username => 'topshop',
password => 'topsecret',
url => 'http://www.billigespil.dk/admin/edbpriser-export.asp',
verbose => 1,
});
#With caching
my $wd = WWW::DanDomain->new({
username => 'topshop',
password => 'topsecret',
url => 'http://www.billigespil.dk/admin/edbpriser-export.asp',
cache => 1,
});
#With custom WWW::Mechanize object
use WWW::Mechanize;
my $mech = WWW::Mechanize->new(agent => 'MEGAnice bot');
my $wd = WWW::DanDomain->new({
username => 'topshop',
password => 'topsecret',
url => 'http://www.billigespil.dk/admin/edbpriser-export.asp',
mech => $mech,
});
#The intended use
package My::WWW::DanDomain::Subclass;
sub processor {
my ( $self, $content ) = @_;
#Note the lines terminations are Windows CRLF
my @lines = split /\r\n/, $$content;
...
}
}
#Using your new class
my $my = My::WWW::DanDomain::Subclass->new({
username => 'topshop',
password => 'topsecret',
url => 'http://www.billigespil.dk/admin/edbpriser-export.asp',
});
my $content = $my->retrieve();
print $$content;
#Using a processor implemented as a code reference
$wd = WWW::DanDomain->new({
username => 'topshop',
password => 'topsecret',
url => 'http://www.billigespil.dk/admin/edbpriser-export.asp',
processor => sub {
${$_[0]} =~ s/test/fest/;
return $_[0];
},
});
#Implementing a processor class
my $processor = MY::Processor->new();
UNIVERSAL::can($processor, 'process');
$wd = WWW::DanDomain->new({
username => 'topshop',
password => 'topsecret',
url => 'http://www.billigespil.dk/admin/edbpriser-export.asp',
processor => $processor,
});
my $content = $wd->retrieve();
print ${$content};

This module is a simple wrapper around WWW::Mechanize it assists the user in getting going with automating tasks related to the DanDomain administrative web interface.
Such as:

This is the constructor.
The constructor takes a hash reference as input. The hash reference should contain keys according to the following conventions:
The parameter is optional.
See also cache parameter below for an example.
The parameter is optional
This parameter can be used of you do not want to implement a subclass of WWW::DanDomain.
The processor parameter can either be:
proces(\$content);
sub { return ${$_[0]} };
Parameters:
The method returns a scalar reference to a string containing the content retrieved from the URL provided to the contructor ("new"). If the "processor" method is overwritten you can manipulate the content prior to being returned.
Takes the content retrieved (see: "retrieve") from the URL parameter provided to the constructor (see: "new"). You can overwrite the behaviour via the constructor (see: "new").
Parameters:
The stub does however not do anything, but it returns the scalar reference untouched.
This is a wrapper for "process", provided for backwards compatibility.

If you want to use authentication you have to provide both username and password.
The base URL provided to retrieve gives an error.
Please see: http://search.cpan.org/perldoc?HTTP%3A%3AResponse or http://search.cpan.org/~gaas/libwww-perl/lib/HTTP/Status.pm
Test the URL in your browser to investigate.
The base URL provided to retrieve gives an error.
Please see: http://search.cpan.org/perldoc?HTTP%3A%3AResponse or http://search.cpan.org/~gaas/libwww-perl/lib/HTTP/Status.pm
Test the URL in your browser to investigate.

The module requires Internet access to make sense and an account with DanDomain with username and password is required.


The tests are based on Test::MockObject::Extends and example data are mocked dummy data. Please see the TODO section.
The test suite uses the following environment variables as flags:
The following data are based on an analysis created using Devel::Cover and the distributions own test suite, instantiated the following way.
% ./Build testcover --verbose
---------------------------- ------ ------ ------ ------ ------ ------ ------ File stmt bran cond sub pod time total ---------------------------- ------ ------ ------ ------ ------ ------ ------ blib/lib/WWW/DanDomain.pm 100.0 100.0 100.0 100.0 100.0 100.0 100.0 Total 100.0 100.0 100.0 100.0 100.0 100.0 100.0 ---------------------------- ------ ------ ------ ------ ------ ------ ------
Please note the report is based on version 0.03 of WWW::DanDomain

The code passes Perl::Critic tests a severity: 1 (brutal)
The following policies have been disabled:
Perl::Critic resource file, can be located in the t/ directory of the distribution t/perlcriticrc
Perl::Tidy resource file, can be obtained from the original author

No known bugs at this time.

Please report any bugs or feature requests via:
bug-www-dandomain at rt.cpan.org



You can find documentation for this module with the perldoc command.
perldoc WWW::DanDomain
You can also look for information at:
http://logiclab.jira.com/wiki/display/DAND/Home+-+WWW-DanDomain

<jonasbn at cpan.org>
This module grew out of a small script using WWW::Mechanize to fetch some data from a website and changing it to satisfy the client utilizing the data.
More a more scripts where based on the original script giving a lot of redundant code. Finally I refactored the lot to use some common code base.
After some time I refactored to an object oriented structure making it even easier to maintain and adding more clients. This made the actual connectivity into a package (this package) letting it loose as open source.


Copyright 2009-2010 jonasbn, all rights reserved.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.