Net-DSLProvider
view release on metacpan or search on metacpan
lib/Net/DSLProvider/Cerberus.pm view on Meta::CPAN
package Net::DSLProvider::Cerberus;
use strict;
use base 'Net::DSLProvider';
use Net::DSLProvider::Cerberus::soap;
use Carp;
use Time::Piece;
use Time::Seconds;
use Date::Holidays::EnglandWales;
use LWP;
__PACKAGE__->mk_accessors(qw/clientid dslcheckuser dslcheckpass/);
my %fields = (
Wsfinddslline => [ qw/ cli clientid / ],
Wsdslgetstats => [ qw/ cli clientid / ],
Wsupdateprofile => [ qw/ cli clientid "interleave-code" "snr-code" / ],
Wssubmitorder => [ qw/ cli "client-ref" forename surname company
street city postcode sex email ordertype "losing-isp" mac
"prod-id" "inst-id" "ip-id" "maint-id" "serv-id" "del-pref"
contract devices "ripe-justification" "skip-line-check" / ],
Wsrequestcancellation => [ qw/ cli clientid crd / ],
Wsrequestmac => [ qw/ cli clientid / ],
Wsgetexchangeevents => [qw/ cli clientid / ],
);
sub _credentials {
my $self = shift;
return SOAP::Header->new(
name =>'AuthenticatedUser',
attr => { xmlns => "http://nc.cerberusnetworks.co.uk/NetCONNECT" },
value => {username => $self->{user}, password => $self->{pass} },
);
}
sub _call {
my ($self, $method, @args) = @_;
Net::DSLProvider::Cerberus::soap->$method(@args, $self->_credentials);
}
sub _make_request {
my ($self, $method, %args) = @_;
my @args = ();
for my $key ( @{$fields{$method}} ) {
if ( $key eq 'clientid' ) {
# The clientid parameter needs to be passed in the right order
push @args, $self->clientid;
next;
}
push @args, $args{$key};
}
my $resp = Net::DSLProvider::Cerberus::soap->$method(@args, $self->_credentials);
return $resp;
}
=head2 order
Place an order. See the Cerberus docs for details of required params
=cut
sub order {
my ($self, %args) = @_;
# Go through the parameters below and remove those that are not mandatory
# and those which are covered in the base package sigs{} definition.
$self->_check_params(\%args, qw/cli client-ref forename surname company
street city postcode sex email ordertype losing-isp mac prod-id
inst-id ip-id maint-id serv-id del-pref contract devices
ripe-justification skip-line-check /);
my %resp = $self->_make_request("Wssubmitorder", %args);
return unless $resp->{Xml_order_submission_dsl}->{Xml_Result} == 1;
return 1;
}
=head2 cease
Cease order management.
If the crd parameter is passed and no cease order is already in place a
new cease order is placed against the specified cli.
If a cease order is already in place on the specified cli and a crd is
passed an attempt is made to change the cease date however this will only
succeed if the order state is not already "Committed".
( run in 0.525 second using v1.01-cache-2.11-cpan-39bf76dae61 )