#!/usr/bin/env perl package Op; use strict; no warnings; use Win32::Process; use Storable; ##use Net::LDAP; use IO::Socket::SSL; 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 OIDC::Lite::Client::WebServer; use Try::Tiny; use feature qw{ say }; use Mail::Sender ; use LWP; use LWP::UserAgent; use HTML::LinkExtor; use HTML::LinkExtractor; sub access_to_protected_resource { my $your_app = shift; my ($args) = @_; my $oktadev = $args->{OKTAUsersList}; #my $datver = $args->{date}; my $email = $args->{Email}; my $date = strftime '%Y-%m-%d-%H-%M-%S', localtime; my @responsetext; my @responsetextall; my $sortor = "filter=eventType+eq+%22"; my $filter = "user.authentication.sso"; my @responsalter; my $target = "%22+and+target.id+eq+%22"; my $strExcelFilename1; my $linkheader; my $pagecount1 = "limit=200"; my $r = 1; my @apiurlapplog2 = $baseurl2 ."/api/v1/users?" . $pagecount1; $strExcelFilename1 = "C:/PERL/" . "Dev-Profile-User-Details" . $date . ".xlsx"; # my @your_app; # my $access_token = $your_app->store->get("access_token"); my $access_token = $your_app->store->get("access_token"); my $expires_at = $your_app->store->get("expires_at"); my $refresh_token = $your_app->store->get("refresh_token"); unless ($access_token) { $your_app->start_authorize(); return; } if ($expires_at < time()) { $your_app->refresh_access_token(); return; } # my $req = HTTP::Request->new( ('GET', "$_[0]")); my $req = HTTP::Request->new( GET => q{https://dev.preview.com/api/v1/users?limit=200}); #$req->header( Authorization => sprintf(q{Bearer}, $access_token) ); $req->header( Authorization => sprintf(q{OAuth %s}, $access_token) ); my $agent = LWP::UserAgent->new; my $res = $agent->request($req); print "Response:$res\n"; @responsetext = parse_json ($res->content); my $workbook = Excel::Writer::XLSX->new( $strExcelFilename1 ); my $my_format = $workbook->add_format( bold => 1, color => 'blue', size => 18, ); my $worksheet = $workbook->add_worksheet('UserSSO-Data'); for my $i (0..$#responsetext) { # print Dumper @responsetextall; $responsetext[$i] =~ s/]\[/,/g; #print Dumper @responsetextall; my $responseid = $responsetextall[$i]{id}; #my $responseid = $responsetextall[$i]{id}; my $responsests = $responsetextall[$i]{status}; if ($responsests ne "DEPROVISIONED") { $worksheet->write(0, 0, 'ID', $my_format); $worksheet->write(0, 1, 'FIRST NAME', $my_format); $worksheet->write(0, 2, 'LAST NAME', $my_format); $worksheet->write($r, 0, $responseid); $worksheet->write($r, 1, $responsetext[$i]{profile}{firstName}); $worksheet->write($r, 2, $responsetext[$i]{profile}{lastName}); } } $workbook->close; print "Spreadsheet saved.\n"; my $sender1= "chandan.ghosh\@abc.com"; my $recipient3 = "$email"; my $msg1 = "

Dear " . $recipient3 . ",

"; $msg1 .= qq|

Please find attached Users lists details.This report was generated automatically

|; $msg1 .= qq|

Regards,

|; $msg1 .= qq|

My TEAM

|; $msg1 .= " "; my $sender1 = new Mail::Sender {smtp => 'relay.myorg.com', port => '25', from => $sender1}; $sender1->OpenMultipart({to => "$recipient3", subject => 'Analysis Report - For Team', }); $sender1->Part({ ctype => 'text/html', disposition => 'NONE', msg => $msg1, }); $sender1->Attach({file => "$strExcelFilename1"}); $sender1->EndPart("text/html"); $sender1->Close; }