ASNMTAP
view release on metacpan - search on metacpan
view release on metacpan or search on metacpan
lib/ASNMTAP/Asnmtap/Plugins/WebTransact.pm view on Meta::CPAN
# ----------------------------------------------------------------------------------------------------------
# © Copyright 2003-2011 by Alex Peeters [alex.peeters@citap.be]
# ----------------------------------------------------------------------------------------------------------
# 2011/mm/dd, v3.002.003, package ASNMTAP::Asnmtap::Plugins::WebTransact
# ----------------------------------------------------------------------------------------------------------
package ASNMTAP::Asnmtap::Plugins::WebTransact;
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
use strict;
use warnings; # Must be used in test mode only. This reduces a little process speed
#use diagnostics; # Must be used in test mode only. This reduces a lot of process speed
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
use CGI::Carp qw(fatalsToBrowser set_message cluck);
use HTTP::Request::Common qw(GET POST HEAD);
use HTTP::Cookies;
use LWP::Debug;
use LWP::UserAgent;
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
use ASNMTAP::Asnmtap qw(%ERRORS %TYPE &_dumpValue);
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
BEGIN { $ASNMTAP::Asnmtap::Plugins::WebTransact::VERSION = do { my @r = (q$Revision: 3.002.003$ =~ /\d+/g); sprintf "%d."."%03d" x $#r, @r }; }
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
use constant FALSE => 0;
use constant TRUE => ! FALSE;
use constant Field_Refs => {
Method => { is_ref => FALSE, type => '' },
Url => { is_ref => FALSE, type => '' },
Qs_var => { is_ref => TRUE, type => 'ARRAY' },
Qs_fixed => { is_ref => TRUE, type => 'ARRAY' },
Exp => { is_ref => FALSE, type => 'ARRAY' },
Exp_Fault => { is_ref => FALSE, type => '' },
Exp_Return => { is_ref => TRUE, type => 'HASH' },
Msg => { is_ref => FALSE, type => '' },
Msg_Fault => { is_ref => FALSE, type => '' },
Timeout => { is_ref => FALSE, type => undef },
Perfdata_Label => { is_ref => FALSE, type => undef }
};
my (%returns, %downloaded, $ua);
keys %downloaded = 128;
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
sub _handleHttpdErrors { print "<hr><h1>ASNMTAP::Asnmtap::Plugins::WebTransact It's not a bug, it's a feature!</h1><p>Error: $_[0]</p><hr>"; }
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
set_message ( \&_handleHttpdErrors );
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
sub _error_message { $_[0] =~ s/\n/ /g; $_[0]; }
# = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
sub new {
my ($object, $asnmtapInherited, $urls_ar) = @_;
# $urls_ar is a ref to a list of hashes (representing a request record) in a partic format.
# If a hash is __not__ in that format it's much better to cluck since it is
# hard to interpret 'not an array ref' messages (from check::_make_request) caused
# by mis spelled or mistaken field names.
&_dumpValue ( $asnmtapInherited, $object .': attribute asnmtapInherited is missing.' ) unless ( defined $asnmtapInherited );
&_dumpValue ( $urls_ar, $object .': URL list is not an array reference.' ) if ( ref $urls_ar ne 'ARRAY' );
my @urls = @$urls_ar;
foreach my $url ( @urls ) {
&_dumpValue ( $url, $object .': Request record is not a hash.' ) if ( ref $url ne 'HASH' );
my @keys = keys %$url;
foreach my $key ( @keys ) {
unless ( exists Field_Refs->{$key} ) {
warn "Expected keys: ", join " ", keys %{ (Field_Refs) };
&_dumpValue ( $url, $object .": Unexpected key \"$key\" in record." );
}
my $ref_type = '';
if ( ($ref_type = ref $url->{$key}) && ( $ref_type ne Field_Refs->{$key}{type} ) ) {
warn "Expected key \"$key\" to be ", Field_Refs->{$key}{type} ? Field_Refs->{$key}{type} .' ref' : 'non ref', "\n";
&_dumpValue ( $url, $object .": Field \"$key\" has wrong reference type" );
}
if ( ! ref $url->{$key} and Field_Refs->{$key}{is_ref} ) {
warn "Expected key \"$key\" to be ", Field_Refs->{$key}{type} ? Field_Refs->{$key}{type} .' ref' : 'non ref', "\n";
&_dumpValue ( $url, $object .": Key \"$key\" not a reference" );
}
if ( $url->{$key} eq '' ) {
warn "Expected key \"$key\" is empty\n";
&_dumpValue ( $url, $object .": Key \"$key\" is empty" );
}
view all matches for this distributionview release on metacpan - search on metacpan
( run in 2.535 seconds using v1.00-cache-2.02-grep-82fe00e-cpan-f5108d614456 )