Astro-SIMBAD-Client
view release on metacpan or search on metacpan
lib/Astro/SIMBAD/Client.pm view on Meta::CPAN
} # End local symbol block.
########################################################################
#
# Utility routines
#
# __build_url
#
# Builds a URL based on the currently-set scheme and server, and
# the fragment provided as an argument. If the fragment is an
# HTTP::Request object it is simply returned.
sub __build_url {
my ( $self, $fragment ) = @_;
defined $fragment
or $fragment = '';
eval { $fragment->isa( 'HTTP::Request' ) }
and return $fragment;
$fragment =~ s< \A / ><>smx; # Defensive programming
return sprintf '%s://%s/%s', $self->get( 'scheme' ),
$self->get( 'server' ), $fragment;
}
# _callers_caller();
#
# Returns the name of the subroutine that called the caller.
# Results undefined if not called from a subroutine nested at
# least two deep.
sub _callers_caller {
my $inx = 1;
lib/Astro/SIMBAD/Client.pm view on Meta::CPAN
}
$pkg = ref $self if !$pkg && $self->can ($code);
defined $pkg or croak <<eod;
Error - '$parser' yields undefined package name.
eod
@parts = split '::', $pkg;
}
return wantarray ? ($pkg, $code) : $pkg;
}
# my $resp = $self->_retrieve( $fragment, \%args );
#
# Build a URL from the contents of the 'scheme' and 'server'
# attributes, and the given fragment, and retrieve the data from
# that URL. The \%args argument is optional.
#
# The return is an HTTP::Response object. If the response is
# indicates that the request is unsuccessful we croak with the URL
# (if that can be retrieved) and the status line.
#
# The details depend on the arguments and the state of the
# invocant as follows:
#
# If $url is an HTTP::Request object, it is executed and the
# response returned. Otherwise
#
# If \%args is present and not empty, and the 'post' attribute is
# true, an HTTP post() request is done to the URL, sending the
# data. Otherwise
#
# If there are arguments they are appended to the URL, and an HTTP
# get() is done to the URL.
sub _retrieve {
my ($self, $fragment, $args) = @_;
my $url = $self->__build_url( $fragment );
$args ||= {};
my $debug = $self->get ('debug');
my $ua = _get_user_agent ();
$self->_delay ();
my $resp;
if (eval {$url->isa('HTTP::Request')}) {
$debug
and print 'Debug ', _callers_caller(), 'executing ',
$url->as_string, "\n";
$resp = $ua->request ($url);
( run in 0.762 second using v1.01-cache-2.11-cpan-b16cb0d3907 )