#!/usr/bin/perl # Ashish Mahabal # Hacked from various other pieces use XML::Parser; use Astro::Time; use SOAP::Lite; my %header = (); my $mstatus = ' '; my $mydet = ' '; my $parser = new XML::Parser(Handlers => {Start => \&handle_start, End => \&handle_end, Char => \&handle_char}); $parser->parsefile("$ARGV[0]"); my $soap = SOAP::Lite ->proxy('http://www.imcce.fr/webservices/skybot/skybot.php') ->uri('urn:skybot'); $rrr = $soap->skybot($jd,$ra,$dec,$err,'votable','all')->result(); open(VOT,">/Library/WebServer/Documents/$voeventid.vot") or die "cant"; for($j=0;$j<=$#$rrr;++$j){ print VOT "$$rrr[$j]\n"; } open(VOTS,">>/Library/WebServer/Documents/voeventable.html") or die "cant"; print VOTS "\n$voeventfullid\n"; print VOTS "Solar System\n"; #print VOTS "Solar System\n"; printf VOTS "Variable Stars\n",$rah,$ram,$ras,$decd,$decm,$decs; system("echo \"got solar system objects\""); ####################### sub handle_start { my $p = shift; my $el = shift; my %attribs = @_; if ($el =~ /\bVOEvent\b/i) { $voeventfullid=$attribs{'id'}; $voeventid=$voeventfullid; $voeventid=~s/.*#//; } } ####################### sub handle_char { my ($p, $data,@rest) = @_; if ($p->current_element eq 'title') { $header{'title'} = $data; } else{ $var=$p->current_element; ${$var}{$id}=$data; if($var eq "crd:ISOTime"){ $year=substr($data,0,4); $month=substr($data,5,2); $date=substr($data,8,2); $hour=substr($data,11,2); $min=substr($data,14,2); $sec=substr($data,17,2); $frac=($hour*3600+$min*60+$sec)/(24*3600); $jd="24".cal2mjd($date,$month,$year,$frac); } elsif($var eq "crd:Value2"){ ($ra,$dec)=split(/ /,$data); $rah=int($ra/15); $ram=int(($ra/15-$rah)*60); $ras=($ra*3600-$rah*15*3600-$ram*60*15)/15; if($dec<0){$decsign="-";}else{$decsign="\%2B";} $decd=abs(int($dec)); $decm=int((abs($dec)-$decd)*60); $decs=(abs($dec)-$decd-$decm/60)*3600; } elsif($var eq "crd:Size"){ ($err1,$err2)=split(/ /,$data); if($err1>$err2){$err=$err1*5*3600;}else{$err=$err2*5*3600;} if($err<60){$err=60;} if($err>1200){$err=1200;} } } } ############################### sub handle_end { } #################