in reply to Re^6: Need to know the process to implement perl script into web application server.
in thread Need to know the process to implement perl script into web application server.

Define the sub outside of the other sub:
sub api_call { my ($client, $value, $url) = @_; $client->addHeader('Authorization',"SSWS $value"); $client->addHeader('Accept','application/json'); $client->addHeader('Content-type','application/json'); $client->GET($url); }

and call it like

api_call($client, $value, $urlstringlog);

map{substr$_->[0],$_->[1]||0,1}[\*||{},3],[[]],[ref qr-1,-,-1],[{}],[sub{}^*ARGV,3]

Replies are listed 'Best First'.
Re^8: Need to know the process to implement perl script into web application server.
by chandantul (Scribe) on Apr 22, 2021 at 20:41 UTC

    Hello Sir, Thanks for your help but i was unable to password App id after entering the same in web FORM. Please check the API call and its missing with the APP id. After target id it should be visible between %22 and %22 , currently getting JSON error

    https://sso.abc.com/users/sys/logs?filter=eventType+eq+%22all.auth.sso +%22+and+target.id+eq+%22%22&since=2021-04-22T00%3A00%3A00.000-04%3A00 +&until=2021-04-21T23%3A59%3A59.000-04%3A00

    JSON error

    JSON error at line 1, byte 1/1259: Unexpected character '<' parsing in +itial state: expecting whitespace: 'n', '\r', '\t', ' ' or start of s +tring: '"' or digit: '0-9' or minus: '-' or start of an array or obje +ct: '{', '[' or start of literal: 't', 'f', 'n' at C:/Users/Documents +/Perl/webapp/bin/../lib/Op.pm line 98.

    Please check my current query.tt

    <form id="f1" method="post" action="/"> <div> <label for="APPID">APPID</label> <input id="APPID" name="APPID"> <label for="date">Time in Hours</label> <input id="date" name="date"> <label for="Email">Recipient Email</label> <input id="Email" name="Email"> </div> <button>Submit</button> </form>

    Please check my current code

    #!/usr/bin/env perl package Op1; use strict; use warnings; use Win32::Process; ##use Net::LDAP; use REST::Client; use JSON::Parse ':all'; use MIME::Base64; use Term::ReadKey; use Data::Dumper; use MIME::Lite; use Net::SMTP; use Spreadsheet::XLSX; use Spreadsheet::ParseXLSX; use Excel::Writer::XLSX; use Config::Properties; use Data::Dumper; use List::Compare; use Array::Compare; use Storable qw/freeze/; use Data::Validate::IP; use Data::Table::Excel; use Excel::Writer::XLSX::Chart; use Win32::OLE::Const; use Spreadsheet::WriteExcel::Utility qw( xl_range_formula ); use Win32::OLE; use POSIX 'strftime'; use POSIX qw(strftime); use DateTime; use DateTime::Format::Strptime; use Try::Tiny; use feature qw{ say }; open my $fh, '<', "C:/PERL/" . "config.properties" or die "unable to o +pen configuration file"; my $properties = Config::Properties->new(); $properties->load($fh); my $value = $properties->getProperty('oktapreview.token'); my $baseurl = $properties->getProperty('oktaQA.baseURL'); my $from_address = 'chandan@aol.com'; my $to_address = 'chandan@bol.com'; my $subject = 'A message with 2 parts ...'; my $my_file_zip = 'C://PERL//'; my $mail_host = 'mail.aol.com'; my $pass = '1234567'; my ($args) = @_; my $appID = $args->{APPID}; my $datver = $args->{date}; my $email = $args->{Email}; my $date = strftime '%Y-%m-%d-%H-%M-%S', localtime; my $date3 = strftime '%Y-%m-%d' , localtime(time() - $datver*60*60 +); my $date4 = strftime '%Y-%m-%d' , localtime(time() - 24*60*60); my $apiurllog = $baseurl ."/users/sys/logs?"; my $client = REST::Client->new(); my @responsetext; my @responsetextall; my $sortor = "filter=eventType+eq+%22"; my $filter = "all.auth.sso"; my @responsalter; my $target = "%22+and+target.id+eq+%22"; my $strExcelFilename; my %header1 = ( -size => 10, ); #sub api_call { # $client->addHeader('Authorization',"SSWS $value"); # $client->addHeader('Accept','application/json'); # $client->addHeader('Content-type','application/json'); # $client->GET($_[0]); #} sub api_call { my ($client, $value, $url) = @_; $client->addHeader('Authorization',"SSWS $value"); $client->addHeader('Accept','application/json'); $client->addHeader('Content-type','application/json'); $client->GET($url); } sub result { my $date2 = "%22&since=" . $date3 . "T00%3A00%3A00.000-04%3A00&until=" + . $date4 . "T23%3A59%3A59.000-04%3A00"; my $urlstringlog = $apiurllog . $sortor . $filter . $target . $appID . + $date2; print "My URL: $urlstringlog"; $strExcelFilename = "C:/PERL/" . "My-File" . $date . ".xlsx"; my $your_file_zip = "My-File . $date . '.xlsx'"; api_call($client,$value,$urlstringlog); @responsetext = parse_json ($client->responseContent()); push @responsetextall, @responsetext; for my $i (0..$#responsetextall) { for my $j (0..$#{$responsetextall[$i]}) { my $responseid = $responsetextall[$i][$j]{act}{UID}; my $responsdisp = $responsetextall[$i][$j]{act}{Name}; push @responsalter, $responseid ; } } my $workbook = Excel::Writer::XLSX->new( $strExcelFilename ); my $format_bold = $workbook->add_format( bold => 1, size => 10, top=> +1, bottom=> 1 ); my $format2 = $workbook->add_format(%header1); my $worksheet = $workbook->add_worksheet('UserSSO-Data'); my $r = 1; my $r2 = 1; my $r3 = 1; foreach my $j (0..$#responsalter ) { $worksheet->write(0, 0, 'UserSSO-Total +-Users' ); $worksheet->write($r2, 0, $responsalter[$j]); $r2 += 1; } $workbook->close; print "Spreadsheet saved.\n"; ## Mail Functionality my $msg = MIME::Lite->new ( From => $from_address, To => $to_address, Subject => $subject, Type =>'multipart/mixed' ) or die "Error creating multipart container: $!\n"; $msg->attach ( Type => 'text/csv', Encoding => 'base64', Path => $my_file_zip, Filename => $your_file_zip, Disposition => 'attachment' ) or die "Error adding $your_file_zip: $!\n"; MIME::Lite->send('smtp', $mail_host, Timeout=>60,Auth=>'LOGIN',AuthUs +er=>$from_address,AuthPass=>$pass,Port => 25, Debug => 1); } #__PACKAGE__

    I am getting below warning

    Use of uninitialized value $datver in multiplication (*) at Op1.pm line 52.

    2021-04-23 Athanasius fixed over-long code lines.

      You seem to believe that $client->responseContent() returns a JSON, but the error shows the returned string starts with a "<", so it's probably an XML or HTML. What does the content contain? Maybe you need to tell the server you want JSON back somehow?

      map{substr$_->[0],$_->[1]||0,1}[\*||{},3],[[]],[ref qr-1,-,-1],[{}],[sub{}^*ARGV,3]

        Hello Sir, The API call URL is incorrect as i am not able to pass the expected app id that i was passing through config.properties that i was unable to pass through Web FORM. Please check below its incomplete, Wondering if the @arg having some issues

        https://sso.abc.com/users/sys/logs?filter=eventType+eq+%22all.auth.sso +%22+and+target.id+eq+%22%22&since=2021-04-22T00%3A00%3A00.000-04%3A00 +&until=2021-04-21T23%3A59%3A59.000-04%3A00

        It suppose to be below as per config.properties values

        https://sso.abc.com/users/sys/logs?filter=eventType+eq+%22all.auth.sso +%22+and+target.id+eq+%220345789ijklmnopqrst%22&since=2021-04-22T00%3A +00%3A00.000-04%3A00&until=2021-04-28T23%3A59%3A59.000-04%3A00

        2021-04-23 Athanasius fixed over-long code lines.

          A reply falls below the community's threshold of quality. You may see it by logging in.