Astro::Catalog::Transport::WebService - A base class for WebService querys


Astro-Catalog documentation Contained in the Astro-Catalog distribution.

Index


Code Index:

NAME

Top

Astro::Catalog::Transport::WebService - A base class for WebService querys

SYNOPSIS

Top

  use base qw/ Astro::Catalog::Transport::WebService /;

DESCRIPTION

Top

This class forms a base class for all the WebService based query classes in the Astro::Catalog distribution (eg Astro::Catalog::Query::Sesame).

REVISION

Top

$Id: WebService.pm,v 1.4 2003/08/03 06:18:35 timj Exp $

METHODS

Top

Constructor

new

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).

querydb

Unlike Astro::Transport::REST a default querydb() method is not provided by this base class, each sub-class must provide its own implemetation.

proxy

Return (or set) the current proxy for the catalog request.

   $usno->proxy( 'http://wwwcache.ex.ac.uk:8080/' );
   $proxy_url = $usno->proxy();

urn

Return the current remote urn for the query

   $host = $q->urn();

Can also be used to set the urn.

endpoint

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' );

General Methods

configure

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;