LS::Service - Base class for authority, metadata, and data services


lsid-perl documentation  | view source Contained in the lsid-perl distribution.

Index


NAME

Top

LS::Service - Base class for authority, metadata, and data services

SYNOPSIS

Top

 # Import standard service framework
 use LS::Service::Authority;
 use LS::Service::DataService;
 use LS::Service::Fault;
 use LS::Service::Response;

 #
 # Use the LS::SOAP::Service subclass to create a SOAP based service
 # that executes in a standard HTTP / CGI environment
 #
 use LS::SOAP::Service transport=> 'HTTP::CGI';

 my $location = 'http://localhost:80';

 # Create the authority service
 my $authority = new LS::Service::Authority(name=> 'i3cauthority', 
					    getAvailableServices=> \&custom_service_ports,
					    authority=> 'i3c.org');

 $authority->add_port(type=> $LS::Authority::WSDL::METADATA_PORT,
		      protocol=> $LS::Authority::WSDL::Constants::Protocols::SOAP,
		      location=> "$location/metadata/");

 # Add the metadata service with namespaces

 my $metadata = new LS::Service::DataService;
 $metadata->add_namespace(new LS::Service::Namespace(name=> 'formats', 
						     data_handler=> \&load_metadata));

 # Create a Service that contains an authority and associated metadata
 my $test_service = new LS::SOAP::Service;




 unless($use_auth) {

	$test_service->auth_type('Basic');
	$test_service->auth_handler(\&auth_me);
 } 

 $test_service->add_metadata_service($metadata);
 $test_service->add_authority_service($authority);

 $test_service->dispatch();

 # Authentication handler
 sub auth_me {

 	my ($user, $pass) = @_;

	return 1;
 }

 # Metadata handler
 sub load_metadata {

	my ($lsid, $accepted_formats) = @_;

	return LS::Service::Fault->fault('Invalid LSID') if(!$lsid);

	return new LS::Service::Response(type=> 'text/plain',
 					 response=> 'Metadata');
 }

 # Handler that customizes WSDL that describes how to invoke the authority
 sub custom_service_ports {

        my $wsdl = shift;

        $wsdl->add_port(type=> 'HTTPPort',
                        protocol=> $LS::Authority::WSDL::Constants::Protocols::HTTP,
                        location=> "$location/authority/");

        $wsdl->add_port(type=> 'SOAPPort',
                        protocol=> $LS::Authority::WSDL::Constants::Protocols::SOAP,
                        location=> "$location/authority/");

	return $wsdl;
 }

DESCRIPTION

Top

This class provides a set of methods to easily create a full or partial. LSID service Any combination of data, metadata or authority sevices are. supported .

CONSTRUCTORS

Top

new ( %options )

Use this constructor to create a new service with the following %options keys:

 auth_type: The type of authentication. Currently unused.
 auth_handler: A boolean function that will authenticate the incoming connection.

METHODS

Top

authorityService ( $LS::Service::Authority )

Enables the authority component of an LSID service to this instance.

dataService ( ref $LS::Service::DataService )

Adds a data component to this LSID service instance.

metadataService ( ref $LS::Service::DataService )

Adds a metadata component to this LSID service instance.

dispatch()

Starts the service and begins accepting requests for resources.

COPYRIGHT

Top


lsid-perl documentation  | view source Contained in the lsid-perl distribution.