in reply to Re^7: 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.

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.

Replies are listed 'Best First'.
Re^9: Need to know the process to implement perl script into web application server.
by choroba (Cardinal) on Apr 22, 2021 at 20:50 UTC
    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.

        For reasons unknown to me, you removed the population of $args from the sub. But what's the contents of @_ outside of a sub?

        Also note that $args and @arg are two totally unrelated variables of a different type and name. When chatting with friends, one doesn't have to be always precise, but when programming, every detail matters.

        map{substr$_->[0],$_->[1]||0,1}[\*||{},3],[[]],[ref qr-1,-,-1],[{}],[sub{}^*ARGV,3]
        A reply falls below the community's threshold of quality. You may see it by logging in.