use strict; use warnings; no warnings 'uninitialized'; use LWP::Simple qw(get); use CGI::Deurl qw(as q); use vars qw(%q); use CGI::Enurl qw(enurl); use XML::Rules; use Data::Dumper; use File::Basename; use HTML::Entities; use Interpolation '"' => sub { '"' . HTML::Entities::encode($_[0], '^\r\n\t !\#\$%\(-;=?-~')}; print "HTTP/1.0 200 OK\n" if($ENV{'PerlXS'} eq 'PerlIS'); print "Content-type: text/html\n\n"; my $script = basename($0); my $site; if ($q{site} eq '' or $q{UploaderID} eq '' or $q{Password} eq '' or $q{back} eq 'yes') { print <<"*END*"; Madgex info

Select the site


Uploader ID:
Password:

All fields are required! *END* exit; } else { $site = $q{site}; } print <<"*END*"; Madgex info *END* my $uploaderID = $q{UploaderID}; my $password = $q{Password}; my $xml = get( "http://$site/jobposting.asmx/Logon?" . enurl({sUploaderID => $uploaderID, sPassword => $password}) ); if (! $xml) { print <<"*END*";

Invalid Uploader ID or Password for site $site

Go back

*END* exit; } my $token = eval {XML::Rules->new( rules => {string => 'content'}, stripspaces => 7 )->parse($xml)->{string}}; #print "token=" . $token . "\n"; if (! $token) { my $err = $@; $xml = HTML::Entities::encode( $xml, '^\r\n\t !\#\$%\(-;=?-~'); $xml =~ s{^( +)}{ ' ' x length($1) }gme; $xml =~ s/\n/\n/sg; print <<"*END*";

Invalid login response

$xml

Error: $err

Go back

*END* exit; } $xml = get( "http://$site/jobposting.asmx/GetApplicationMethodTypes?" . enurl({uiSecurityToken => $token}) ); my $ApplicationMethods = XML::Rules->new( rules => {string => 'content array', ArrayOfString => sub {return $_[1]->{string}}}, stripspaces => 7 )->parse($xml); print "

Application Methods

\n

"; print join( "
\n", @$ApplicationMethods); print "

\n\n"; $xml = get( "http://$site/jobposting.asmx/GetAvailableRecruiters?" . enurl({uiSecurityToken => $token}) ); my $Recruiters = XML::Rules->new( rules => { 'Name,ID' => 'content', WSRecruiter => 'no content array', ArrayOfWSRecruiter => sub {return $_[1]->{WSRecruiter}}}, stripspaces => 7 )->parse($xml); print <<"*END*";

Recruiters

*END* foreach (@$Recruiters) { print "\n"; } print "
IDName
$_->{ID}$_->{Name}
\n\n"; $xml = get( "http://$site/jobposting.asmx/GetJobProperties?" . enurl({uiSecurityToken => $token}) ); my $JobProperties = XML::Rules->new( rules => { '_default' => 'content', Mandatory => sub { return Mandatory => ($_[1]->{_content} eq 'true' ? 'mandatory' : 'optional')}, WSJobProperty => 'no content array', ArrayOfWSJobProperty => sub {return $_[1]->{WSJobProperty}} }, stripspaces => 7 )->parse($xml); print <<"*END*";

Job Properties

*END* foreach (@$JobProperties) { print "\n"; } print "
NameLengthDescription
$_->{Name}$_->{MaxLen}$_->{Desc}$_->{Mandatory}
\n\n"; $xml = get( "http://$site/jobposting.asmx/GetActiveUpsellPackages?" . enurl({uiSecurityToken => $token}) ); my $Upsells = XML::Rules->new( rules => {'_default' => 'content', WSUpsell => 'no content array', ArrayOfWSUpsell => sub {return $_[1]->{WSUpsell}}}, stripspaces => 7 )->parse($xml); print <<"*END*";

Upsells

*END* foreach (@$Upsells) { print "\n"; } print "
IDName
$_->{ID}$_->{Name}
\n\n"; $xml = get( "http://$site/jobposting.asmx/GetCategories?" . enurl({uiSecurityToken => $token}) ); #print $xml; #exit; my $Categories = XML::Rules->new( rules => { '_default' => 'content', Mandatory => sub { return Mandatory => ($_[1]->{_content} eq 'true' ? 'mandatory' : 'optional')}, MultiSelect => sub { return MultiSelect => ($_[1]->{_content} eq 'true' ? 'multiple' : 'single')}, WSCategory => 'no content array', ArrayOfWSCategory => sub {return $_[1]->{WSCategory}} }, stripspaces => 7 )->parse($xml); #print Dumper($Categories); print <<"*END*";

Categories

*END* my $catParser = XML::Rules->new( rules => { '_default' => 'content', WSTerm => sub {'@list' => qq{$_[1]->{ID},"$_[1]->{Name}"}}, ArrayOfWSTerm => sub {return $_[1]->{list}}, }, stripspaces => 7 ); foreach my $Category (@$Categories) { $xml = get( "http://$site/jobposting.asmx/GetCategoryTerms?" . enurl({uiSecurityToken => $token, sCategoryID => $Category->{ID}}) ); my $Terms = $catParser->parse($xml); if ($Terms and @$Terms) { $Terms = join( "
\n", @$Terms) } else { $Terms = ''; } print "\n"; } print <<"*END*";
IDNameSelectReq?Options
$Category->{ID}$Category->{Name} $Category->{MultiSelect}$Category->{Mandatory} $Terms

Go back

*END* $xml = get( "http://$site/jobposting.asmx/Logoff?" . enurl({uiSecurityToken => $token}) );