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

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.8

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3