lsid-perl
view release on metacpan or search on metacpan
lib/LS/HTTP/Service.pm view on Meta::CPAN
#
sub getAvailableServices {
my $self = shift;
my $handler = $self->dispatch_authority_to;
unless ($handler) {
#die LS::HTTP::Fault->faultcode('Client')
#->faultstring('Unknown method')
#->errorcode(101)
#->description('A call was made to an unknown method getAvailableServices.');
}
my $response;
my $method_name;
if ($handler->can('getAvailableServices')) {
$method_name = 'getAvailableServices';
$response = $handler->getAvailableServices(@_);
}
else {
#die LS::SOAP::Fault->faultcode('Server')
#->faultstring('Not implemented')
#->errorcode(501)
#->description('getAvailableServices is not implemented by this authority service.');
}
unless( (UNIVERSAL::isa($response, 'LS::Service::Response') ||
UNIVERSAL::isa($response, 'LS::Service::Fault')) ) {
#die LS::SOAP::Fault->faultcode('Server')
#->faultstring('Internal processing error')
#->errorcode(500)
#->description(
#$method_name . ' in package ' .
#(ref $handler ? ref $handler : $handler) .
#' did not return a scalar or an LS::SOAP::Response object.'
#);
}
if(UNIVERSAL::isa($response, 'LS::Service::Fault')) {
bless $response, 'LS::HTTP::Fault';
$response->to_http_response;
return undef;
}
my @ret;
if (ref $response eq 'LS::SOAP::Response') {
if ($response->expires) {
push(
@ret, undef
#SOAP::Header->name(expires => $response->expires)
#->prefix($METHOD_PREFIX)
#->uri($URI)
);
}
}
return @ret;
}
sub getMetadata {
my $self = shift;
my $handler = $self->dispatch_metadata_to;
unless ($handler) {
#die LS::SOAP::Fault->faultcode('Client')
#->faultstring('Unknown method')
#->errorcode(101)
#->description('A call was made to an unknown method getMetadata.');
}
unless ($handler->can('getMetadata')) {
#die LS::SOAP::Fault->faultcode('Server')
#->faultstring('Not implemented')
#->errorcode(501)
#->description('getMetadata is not implemented by this metadata service.');
}
my $response = $handler->getMetadata(@_);
unless( (UNIVERSAL::isa($response, 'LS::Service::Response') ||
UNIVERSAL::isa($response, 'LS::Service::Fault')) ) {
#die LS::SOAP::Fault->faultcode('Server')
#->faultstring('Internal processing error')
#->errorcode(500)
#->description(
#'getMetadata in package ' .
#(ref $handler ? ref $handler : $handler) .
#' did not return a scalar or an LS::SOAP::Response object.'
#);
}
if(UNIVERSAL::isa($response, 'LS::Service::Fault')) {
bless $response, 'LS::HTTP::Fault';
$response->to_http_response;
return undef;
}
my @ret;
if (ref $response eq 'LS::HTTP::Response') {
if ($response->expires) {
push(
@ret, undef
#SOAP::Header->name(expires => $response->expires)
#->prefix($METHOD_PREFIX)
#->uri($URI)
);
}
}
return @ret;
}
sub getData {
my $self = shift;
my $handler = $self->dispatch_data_to;
unless ($handler) {
#die LS::SOAP::Fault->faultcode('Client')
#->faultstring('Unknown method')
#->errorcode(101)
#->description('A call was made to an unknown method getData.');
}
unless ($handler->can('getData')) {
#die LS::SOAP::Fault->faultcode('Server')
#->faultstring('Not implemented')
#->errorcode(501)
#->description('getData is not implemented by this data service.');
}
my $data = $handler->getData(@_);
unless( (UNIVERSAL::isa($data, 'LS::Service::Response') || UNIVERSAL::isa($data, 'LS::Service::Fault')) ) {
#die LS::SOAP::Fault->faultcode('Server')
#->faultstring('Internal processing error')
#->errorcode(500)
#->description(
#'getData in package ' .
#(ref $handler ? ref $handler : $handler) .
#' did not return a scalar.'
#);
}
if(UNIVERSAL::isa($data, 'LS::Service::Fault')) {
bless $data, 'LS::HTTP::Fault';
$data->to_http_response;
return undef;
}
}
#
# Faults for HTTP based authorities
#
package LS::HTTP::Fault;
( run in 1.545 second using v1.01-cache-2.11-cpan-39bf76dae61 )