#! /usr/bin/perl 

use strict;
use warnings;

###########################################################
#
# The script tests the pareto_server.
#
###########################################################

#use lib qw(Classes Core);
#use Exporter;
#use LocalConfiguration;
#use Distribution;
use LWP;

#use PDBUtils;
#use String;
#use TargetsManager;
#use GroupsManager;
my $RESPONSE_TIMEOUT = 30; # in sec

#my $http = 'https://hpcr.cs.odu.edu:443/pareto_server/pareto.cgi';
#my $http = 'http://sysbio.rnet.missouri.edu/cgi-bin/multicom_cluster/prosys.pl';
#my @pars = qw/SEQUENCE RKVDYSTFLQEVNNDQVREARINGREINVTKKDSNRYTTYIPVQDPKLLDNLLTKNVKVVGE TARGET T0999 REPLYEMAIL models@predictioncenter.org/;
#my @pars = qw/protein_sequence RKVDYSTFLQEVNNDQVREARINGREINVTKKDSNRYTTYIPVQDPKLLDNLLTKNVKVVGE target_name T0999 email_address models@predictioncenter.org/;
my $http = "http://ffas.godziklab.org/casp-cgi/mailmodel_casp13.pl";
my @pars = qw/reply bmonast1974@yahoo.com target T0999 format casp method FFAS03 sequence RKVDYSTFLQEVNNDQVREARINGREINVTKKDSNRYTTYIPVQDPKLLDNLLTKNVKVVGE/;

my @arr = ($http, \@pars);

foreach my $el (@{$arr[1]}){
   print $el."\n";
}

#exit;

my $agent = LWP::UserAgent->new(ssl_opts => { verify_hostname => 0 });
$agent->timeout($RESPONSE_TIMEOUT);

my $response = $agent->post(@arr);

if ($response->is_success) {
    printf "%s\n", $response->content;
} else {
    print "Request wasn't successful\n";
}







=head

my $targ_id =1;
my $gr_id = 99;

my @arr = &build_post_request($targ_id, $gr_id);

print $arr[0]."\n";
foreach my $el ( @{$arr[1]}){
   print $el."\n";
}

sub  build_post_request {
#    (@_ == 5) || die("Invalid arguments supplied");

    my ($targets_id, $groups_id) = @_;

    my @result = ();

    my $targets_manager = new TargetsManager();
    my $groups_manager = new GroupsManager();

    my %target_info = $targets_manager->info($targets_id);
    my %server_info = $groups_manager->info_server($groups_id);

    my $url = String::trim($server_info{REQUEST_CGI});

    if($url eq '') {
 #       $self->log($uid, "ERROR! REQUEST_CGI is empty");
        return @result;
    } elsif(($url =~ /\?/) || ($url =~ /\&/) || ($url =~ / /)) {
 #       $self->log($uid, sprintf("WARNING! REQUEST_CGI contains invalid characters! It may cause problems. Group: %s. URL: %s", $server_info{NAME}, $server_info{REQUEST_CGI}));
    }

    push(@result, $url);
    my %parameters = ();

    $parameters{$server_info{TARGET_NAME_KEY}} = $target_info{NAME};
    $parameters{$server_info{SEQUENCE_KEY}} = &format_sequence($target_info{NAME}, $target_info{SEQUENCE}, $server_info{SEQUENCE_FORMAT});
    $parameters{$server_info{EMAIL_KEY}} = $LOCAL_CONFIG->{SERVERS_DISTRIBUTION_EMAIL};

#    if($is_qa_request && $groups_manager->is_qa_server($groups_id)) {
#        $parameters{$server_info{TARBALL_KEY}} = sprintf("%s/%s.stage%1d.3D.srv.tar.gz", $LOCAL_CONFIG->{QA_TARBALL_LOCATION}, $targets_manager->name($targets_id), $is_qa_request);   # tarball
#    }

    # add additional parameter - location of the file for assisted targets
#    if ($target_info{NAME} =~ m/^T[Racspx]/){
#        if (defined($server_info{ADDFILE_KEY}) && String::trim($server_info{ADDFILE_KEY}) ne ''){
#                $parameters{$server_info{ADDFILE_KEY}} = sprintf("%s/%s.tar.gz", $LOCAL_CONFIG->{EXTRA_EXP_TARBALL_LOCATION}, $target_info{NAME});
#        }
#    }

    if(String::trim($server_info{OTHER}) ne '') {
        my @pairs = split(/&/, $server_info{OTHER});

        foreach my $pair (@pairs) {
            my ($name, $value) = split(/=/, $pair);
            $parameters{$name} = $value;
        }
    }

    push(@result, [%parameters]);

    return @result;
}

sub format_sequence {
#    (@_ == 4) || die("Invalid arguments supplied");
    my ($target_name, $sequence, $type) = @_;

    $sequence = validate_sequence($sequence);

    if($type eq 'fasta') {
        $sequence = sprintf(">%s\n%s", $target_name, reformat_sequence($sequence));
    }

    return $sequence;
}

=cut
