[Bio] / FigWebServices / rast_submit_server.cgi Repository:
ViewVC logotype

Diff of /FigWebServices/rast_submit_server.cgi

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.6, Thu Oct 22 21:15:13 2009 UTC revision 1.9, Fri Nov 20 17:54:21 2009 UTC
# Line 1  Line 1 
1  use strict;  use strict;
2  use FIG;  use FIG;
3    use POSIX;
4    
5  my $have_fcgi;  my $have_fcgi;
6  eval {  eval {
# Line 23  Line 24 
24                   get_contigs_from_entrez                   get_contigs_from_entrez
25                   submit_RAST_job                   submit_RAST_job
26                   status_of_RAST_job                   status_of_RAST_job
                  retrieve_RAST_job  
27                   kill_RAST_job                   kill_RAST_job
28                   delete_RAST_job                   delete_RAST_job
29                     get_job_metadata
30                  );                  );
31    
32  my %methods = map { $_ => 1 } @methods;  my %methods = map { $_ => 1 } @methods;
# Line 47  Line 48 
48      while ((my $cgi = new CGI::Fast()) &&      while ((my $cgi = new CGI::Fast()) &&
49             ($max_requests == 0 || $n_requests++ < $max_requests))             ($max_requests == 0 || $n_requests++ < $max_requests))
50      {      {
51            &log("fcgi request received");
52          eval {          eval {
53              &process_request($cgi);              &process_request($cgi);
54          };          };
55          if ($@)          my $had_error = $@;
56            &log("fcgi request completed $had_error");
57            if ($had_error)
58          {          {
59              if (ref($@) ne 'ARRAY')              if (ref($had_error) ne 'ARRAY')
60              {              {
61                  warn "code died, cgi=$cgi returning error\n";                  warn "code died, cgi=$cgi returning error\n";
62                  print $cgi->header(-status => '500 error in body of cgi processing');                  print $cgi->header(-status => '500 error in body of cgi processing');
# Line 65  Line 69 
69  else  else
70  {  {
71      my $cgi = new CGI();      my $cgi = new CGI();
72        &log("request received");
73      &process_request($cgi);      &process_request($cgi);
74        &log("request completed");
75  }  }
76    
77  exit;  exit;
78    
79    sub log
80    {
81        my($msg) = @_;
82        print STDERR strftime("%D %T: $msg\n", localtime);
83    }
84    
85    
86  sub process_request  sub process_request
87  {  {
88      my($cgi) = @_;      my($cgi) = @_;
89    
90      my $function = $cgi->param('function');      my $function = $cgi->param('function');
91  #    print STDERR "got function=$function\n";  #    print STDERR "got function=$function\n";
92        &log("handle $function");
93    
94      my $arg_str = $cgi->param('args');      my $arg_str = $cgi->param('args');
95      my @args;      my @args;
# Line 142  Line 156 
156    
157      my $rast_obj = new RAST_submission($rast_dbmaster, $dbmaster, $user_obj);      my $rast_obj = new RAST_submission($rast_dbmaster, $dbmaster, $user_obj);
158    
159      if ($methods{$function})  
160        #
161        # We handle retrieve in a different manner.
162        #
163        if ($function eq 'retrieve_RAST_job')
164        {
165            my $res;
166            eval {
167                $res = $rast_obj->retrieve_RAST_job(@args);
168            };
169    
170            if ($@)
171            {
172                myerror($cgi, '500 error in method invocation', $@);
173            }
174    
175            if ($res->{status} ne 'ok')
176            {
177                myerror($cgi, "501 retrieve failed: $res->{error_msg}");
178            }
179    
180            if (!open(F, "<", $res->{file}))
181            {
182                myerror($cgi, "501 could not open output file");
183            }
184    
185            print $cgi->header();
186    
187            my $buf;
188    
189            while (read(F, $buf, 4096))
190            {
191                print $buf;
192            }
193            close(F);
194        }
195        elsif ($methods{$function})
196      {      {
197    
198          my @results;          my @results;

Legend:
Removed from v.1.6  
changed lines
  Added in v.1.9

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3