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 )