#!/usr/local/cpanel/3rdparty/bin/perl

# cpanel - /opt/cpanel-ccs/bin/test_get_ccs_cal_events
#                                                   Copyright 2019 cPanel, L.L.C.
#                                                            All rights Reserved.
# copyright@cpanel.net                                          http://cpanel.net
# This code is subject to the cPanel license.  Unauthorized copying is prohibited

use strict;
use warnings;

use Getopt::Long ();
use Cpanel::UUID ();
use HTTP::Request;
use HTTP::Headers;
use LWP::UserAgent;
use IO::Socket::SSL;

use lib '/var/cpanel/perl';
use Cpanel::CCS::Userdata;

sub usage {
    my ($msg) = @_;

    print "Error: $msg\n" if defined $msg;
    print "usage: test_get_ccs_cal_event.pl --user=user_email_address --password=password --calendar_base_url=https://myccs.tld:2080\n";
    return 1 if defined $msg;
    return 0;
}

sub script {
    my (@argv) = @_;

    local $| = 1;

    my $user;
    my $calendar_base_url;
    my $password;
    my $help;

    my $opts = Getopt::Long::GetOptionsFromArray(
        \@argv,
        'user=s'              => \$user,
        'password=s'          => \$password,
        'calendar_base_url=s' => \$calendar_base_url,
        'help'                => \$help,
    ) or return ( usage("Invalid parameters") );

    if ( defined $help ) {
        return ( usage() );
    }

    return usage("need user")              if !defined $user;
    return usage("need password")          if !defined $password;
    return usage("need calendar_base_url") if !defined $calendar_base_url;

    my $users = Cpanel::CCS::Userdata::get_users();

    my $user_uuid = $users->{$user}->{'uuid'};
    my $url       = $calendar_base_url . "/calendars/__uids__/$user_uuid/calendar/";
    print $url . "\n";

    my $ret;

    my $request = HTTP::Request->new( 'GET', $url );
    $request->authorization_basic( $user, $password );

    my $ua = LWP::UserAgent->new(
        ssl_opts => {
            verify_hostname => 0,
            SSL_verify_mode => IO::Socket::SSL::SSL_VERIFY_NONE,
        },
    );
    my $response = $ua->request($request);

    my $code    = $response->code;
    my $content = $response->content;

    print "CODE :$code:\n$content\n";

    return 0;
}

exit( script(@ARGV) ) unless caller();

1;

