Bio-Das
view release on metacpan or search on metacpan
else {
warn $request->error;
}
}
The is_success() method returns true on a successful request, false
otherwise. In case of an unsuccessful request, the error() method
will provide additional information on why the request failed The
format is "XXXX human-readable string" as in:
400 Bad command
The following error strings can be returned:
400 Bad command
401 Bad data source
402 Bad command arguments
403 Bad reference object
404 Bad stylesheet
405 Coordinate error
410 Unknown host
411 Couldn't connect
412 Communications error
413 Authentication scheme 'xxxx" is not supported
500 Server error
501 Unimplemented feature
502 No X-Das-Version header
503 Invalid X-Das-Version header
504 DAS server is too old
505 No X-Das-Status header
506 Data decompression failure
To discover which server a request was sent to, you can call its dsn()
method. This will return the server and data source as a single URL,
e.g.:
my $dsn = $request->dsn;
print $dsn,"\n"; # prints 'http://www.wormbase.org/db/das/elegans'
What is returned is actually a L<Bio::Das::DSN> object. You can call
the object's base() method to return the server part of the DSN, and
its id() method to return the data source:
my $dsn = $request->dsn;
print $dsn->base,"\n"; # prints 'http://www.wormbase.org/db/das'
print $dsn->id,"\n"; # prints 'elegans'
To get the results of from the request, call its results() method. In
a list context, results() will return a list of the appropriate
objects for the request (a set of L<Bio::Das::Feature> objects for the
features() request a set of L<Bio::Das::Stylesheet> objects for the
stylesheet() request, a set of L<Bio::Das::Type> objects for the
types() request, and a set of raw DNA strings for the dna()
request.)
In a scalar context, results() will return a hashref in which the keys
are the segment strings passed to the request with the B<-segments>
argument and the values are arrayrefs containing the list of results.
There is an equivalence here. When this code fragment executes, both
$results_hash1 and $results_hash2 will contain the same information.
my @results = $request->results;
my $result_hash1 = {};
for my $r (@results) {
my $segment = $r->segment;
push @{$result_hash{$segment}},$r;
}
my $result2_hash2 = $request->results;
=head2 Authentication
It may be desirable to access DAS data that is stored in an
authenticating (password protected) server. Only HTTP Basic
authentication is currently supported by Bio::Das, but you can run the
authentication over an SSL connection, thereby avoiding the risk of
passwords being sniffed.
Authentication information can be passed to the server in either of
two ways:
=over 4
=item In the server's URL
You can provide the username and password in the form:
http://user:pass@my.das.server.org/cgi-bin/das
Where B<user> and B<pass> are the username and password required for
authentication.
Unless you do with this an SSL (https:) connection, you will get a
warning that using the password in the URL violates the recommendation
in RFC 2396. You can suppress this warning using the no_rfc_warning()
method:
$das->no_rfc_warning(1);
=item Using an authentication callback
You can provide a subroutine code reference that returns the username
and password at the time you create the Bio::Das object. When
accessing a password protected site, Bio::Das will invoke your
callback using information about the request. The callback will return
the appropriate username and password. You can do whatever you need
to do to get the authentication information, whether accessing an
enterprise database, or popping up a dialog box for the user to
respond to.
=back
To install an authentication callback, pass a coderef to
the B<-auth_callback> argument when calling Bio::Das->new():
Bio::Das->new(-auth_callback=>\&my_authentication_routine);
The callback will be called with three arguments:
( run in 1.422 second using v1.01-cache-2.11-cpan-b16cb0d3907 )