##
JSON error at line 1, byte 1/1259: Unexpected character '<' parsing initial state: expecting whitespace: 'n', '\r', '\t', ' ' or start of string: '"' or digit: '0-9' or minus: '-' or start of an array or object: '{', '[' or start of literal: 't', 'f', 'n' at C:/Users/Documents/Perl/webapp/bin/../lib/Op.pm line 98.
####
####
#!/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 open 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',AuthUser=>$from_address,AuthPass=>$pass,Port => 25, Debug => 1);
}
#__PACKAGE__