| Astro-Catalog documentation | Contained in the Astro-Catalog distribution. |
Astro::Catalog::Transport::WebService - A base class for WebService querys
use base qw/ Astro::Catalog::Transport::WebService /;
This class forms a base class for all the WebService based query classes
in the Astro::Catalog distribution (eg Astro::Catalog::Query::Sesame).
$Id: WebService.pm,v 1.4 2003/08/03 06:18:35 timj Exp $
Create a new instance from a hash of options
$q = new Astro::Catalog::Transport::WebService(
Coords => new Astro::Coords(),
Radius => $radius,
Bright => $magbright,
Faint => $magfaint,
Sort => $sort_type,
Number => $number_out );
returns a reference to an query object. Must only called from sub-classed constructors.
RA and Dec are also allowed but are deprecated (since with only RA/Dec the coordinates must always be supplied as J2000 space-separated sexagesimal format).
Unlike Astro::Transport::REST a default querydb() method is not
provided by this base class, each sub-class must provide its own
implemetation.
Return (or set) the current proxy for the catalog request.
$usno->proxy( 'http://wwwcache.ex.ac.uk:8080/' ); $proxy_url = $usno->proxy();
Return the current remote urn for the query
$host = $q->urn();
Can also be used to set the urn.
Return the current endpoint for the query
$host = $q->endpoint(); $q->endpoint( 'http://www.blah.org:8080' ););
Can also be used to set the endpoint. If the endpoint is a wsdl file the SOAP::Lite object will automagically be configured to use the correct URN, e.g.
$q->endpoint( 'http://cdsws.u-strasbg.fr/axis/Sesame.jws?wsdl' );
Configures the object, takes an options hash as an argument
$q->configure( %options );
Does nothing if the array is not supplied.
| Astro-Catalog documentation | Contained in the Astro-Catalog distribution. |
package Astro::Catalog::Transport::WebService;
# L O A D M O D U L E S -------------------------------------------------- use 5.006; use strict; use warnings; use base qw/ Astro::Catalog::Query /; use vars qw/ $VERSION /; use SOAP::Lite; use Net::Domain qw(hostname hostdomain); use File::Spec; use Carp; # generic catalog objects use Astro::Catalog; use Astro::Catalog::Star; '$Revision: 1.4 $ ' =~ /.*:\s(.*)\s\$/ && ($VERSION = $1);
sub new { my $proto = shift; my $class = ref($proto) || $proto; # bless the query hash into the class my $block = bless { OPTIONS => {}, COORDS => undef, URN => undef, ENDPOINT => undef, SERVICE => undef, QUERY => undef, BUFFER => undef }, $class; # Configure the object [even if there are no args] $block->configure( @_ ); return $block; }
sub querydb { croak "querydb() must be provided by the subclass\n"; }
sub proxy { my $self = shift; # SOAP::Lite respects the HTTP_proxy environment variable if (@_) { my $proxy_url = shift; $ENV{HTTP_proxy} = $proxy_url; $ENV{HTTP_PROXY} = $proxy_url; } # return the current proxy return $ENV{HTTP_proxy}; }
sub urn { my $self = shift; # SETTING URL if (@_) { # set the url option my $urn = shift; $self->{URN} = $urn; } return $self->{URN}; }
sub endpoint { my $self = shift; # SETTING ENDPOINT if (@_) { # set the url option my $endpoint = shift; if( $endpoint =~ /wsdl$/ ) { $self->{SERVICE} = 1; } $self->{ENDPOINT} = $endpoint; } if ( defined $self->{ENDPOINT} ) { return $self->{ENDPOINT}; } else { return $self->_default_endpoint(); } }
sub configure { my $self = shift; $self->SUPER::configure( @_ ); } # T I M E A T T H E B A R --------------------------------------------
sub _default_urn { croak "default URN must be specified in subclass\n"; }
sub _default_endpoint { croak "default endpoint must be specified in subclass\n"; }
sub _is_service { croak "decision must be made by subclass\n"; }
# L A S T O R D E R S ------------------------------------------------------ 1;