#!/usr/bin/perl
#Wei Wu 
use HTTP::Cookies;
use LWP;
my $usage="USAGE: NetAffixer username password
You can register for an account at http://www.affymetrix.com\n";
if (scalar(@ARGV) < 2) {
  print(STDERR $usage);
  exit(1);
}
my $username=$ARGV[0];
my $password=$ARGV[1];

my $urlbase='http://www.affymetrix.com/analysis/downloads/taf/';
my %files=('Arabidopsis_ATH1'=>'ATH1-121501_annot_csv.zip',
	   'Barley1'=>'Barley1_annot_csv.zip',
	   'HG-U133A' =>'HG-U133A_annot_csv.zip',
         'Arabidopsis'=>'AG_annot_csv.zip',
          'B_subtilis'=>'Bsubtilis_annot_csv.zip',
         'C_elegans'=>'Celegans_annot_csv.zip',
         'Drosophila'=>'DrosGenome1_annot_csv.zip',
         'E_coli'=>'EColi_annot_csv.zip',
	 'E_coli_Antisense'=>'EColi_ASv2_annot_csv.zip',
         'HC-G110'=>'Hc_g110_annot_csv.zip',
	   'HG-Focus'=>'HG-Focus_annot_csv.zip',
	   'HG-U133A'=>'HG-U133A_annot_csv.zip',
          'HG-U133B'=>'HG-U133B_annot_csv.zip',
          'HG-U95Av2'=>'HG_U95Av2_annot_csv.zip',
          'HG-U95B'=>'HG_U95B_annot_csv.zip',
           'HG-U95C'=>'HG_U95C_annot_csv.zip',
           'HG-U95D'=>'HG_U95D_annot_csv.zip',
           'HG-U95E'=>'HG_U95E_annot_csv.zip',
           'HuGeneFL'=>'HuGeneFL_annot_csv.zip',
            'MG-U74Av2'=>'MG_U74Av2_annot_csv.zip',
             'MG-U74Bv2'=>'MG_U74Bv2_annot_csv.zip', 
            'MG-U74Cv2'=>'MG_U74Cv2_annot_csv.zip',
	   'Mouse-430A'=>'MOE430A_annot_csv.zip',
	   'Mouse-430B'=>'MOE430B_annot_csv.zip',
            'Mu11KsubA'=>'Mu11KsubA_annot_csv.zip',
            'Mu11KsubB'=>'Mu11KsubB_annot_csv.zip',
	   'P_aeruginosa'=>'Pae_G1a_annot_csv.zip',
	   'Rat-230A'=>'RAE230A_annot_csv.zip',
           'Rat-230B'=>'RAE230B_annot_csv.zip',
            'RG-U34A'=>'RG_U34A_annot_csv.zip',
            'RG-U34B'=>'RG_U34B_annot_csv.zip',
	   'RG-U34C'=>'RG_U34C_annot_csv.zip',
            'RN-U34'=>'RN_U34_annot_csv.zip',
             'RT-U34'=>'RT_U34_annot_csv.zip',
             'YG-S98'=>'Yg_s98_annot_csv.zip');

sub do_GET {
  # Parameters: the URL,
  #  and then, optionally, any header lines: (key,value, key,value)
 
  my $resp = $browser->get(@_);
  return ($resp->content, $resp->status_line, $resp->is_success, $resp)
    if wantarray;
  return unless $resp->is_success;
  return $resp->content;
}



my $cookie_jar = HTTP::Cookies->new( {});
$browser = LWP::UserAgent->new;
$browser->agent('Mozilla/4.76 [en] (Win98; U)');
$browser->cookie_jar( $cookie_jar );
($doc, $status, $success, $resp) = do_GET("http://www.affymetrix.com/site/processLogin.jsp?logon=${username}&password=${password}");
if($doc =~ /invalid/){
print (STDERR "Login failure, check your username and password and try again.\n");
exit(1);}
foreach my $file (keys %files){
    ($doc, $status, $success, $resp) = do_GET($urlbase.$files{$file});
    open OUTPUT, ">$file" or die;
    binmode(OUTPUT);
    print OUTPUT $doc;
    close OUTPUT;

    ${files{$file}} =~ s/_csv.zip$//;
$cat_file="${files{$file}}.csv";
    
`unzip $file`;
unlink $file;

open FH, $cat_file or die;
    $out_file="Affy_".$file.".txt";
    open OUTPUT,">$out_file" or die;
<FH>;
    print OUTPUT "Names\tDescription\n";
    for my $line (<FH>){
        my @rowdata= split /\",\"/,$line;
        $rowdata[0] =~ s/\"//g;
        my $names="${rowdata[0]}";
        $names.=", ${rowdata[12]}" unless $rowdata[12] =~ /---/; 
        $rowdata[14] =~ s/\/\/.*//;
 $names.=", ${rowdata[14]}" unless $rowdata[14] =~ /---/;
print OUTPUT "$names\t${rowdata[7]}\n"}
    close FH;
unlink $cat_file ;
}
