NAME
WebService::CIA::Source::Web - An interface to the online CIA World Factbook
SYNOPSIS
use WebService::CIA::Source::Web;
my $source = WebService::CIA::Source::DBM->new();
DESCRIPTION
WebService::CIA::Source::Web is an interface to the live, online version of the CIA World Factbook.
It's a very slow way of doing things, but requires no pre-compiled DBM. It's more likely to be useful for proving concepts or testing.
METHODS
Apart from new
, these methods are normally accessed via a WebService::CIA object.
new( \%opts )
-
my $source = WebService::CIA::Source::Web->new(); $source = WebService::CIA::Source::Web->new( { user_agent => $ua } );
This method creates a new WebService::CIA::Source::Web object. It takes an optional hashref of arguments.
user_agent
-
A user agent object to use. This must implement the same user interface as
LWP::UserAgent
(or, at least, aget()
method).
value($country_code, $field)
-
Retrieve a value from the web.
$country_code
should be the FIPS 10-4 country code as defined in https://www.cia.gov/library/publications/the-world-factbook/appendix/appendix-d.html.$field
should be the name of the field whose value you want to retrieve, as defined in https://www.cia.gov/library/publications/the-world-factbook/docs/notesanddefs.html. (WebService::CIA::Parser also creates four extra fields: "URL", "URL - Print", "URL - Flag", and "URL - Map" which are the URLs of the country's Factbook page, the printable version of that page, a GIF map of the country, and a GIF flag of the country respectively.)value
will returnundef
if the country or field cannot be found, or if there is an error GETing the page. This isn't ideal, but I can't think of the best way around it right now. all($country_code)
-
Returns a hashref of field-value pairs for
$country_code
or an empty hashref if$country_code
isn't available from the Factbook. get($country_code)
-
Retrieve and cache the data for a country.
Returns 1 if successful, 0 if not.
cached($country_code)
-
Get/set the country code whose data is cached.
cache($hashref)
-
Get/set a hashref of data for the current country.
parser()
-
Returns a reference to the WebService::CIA::Parser object being used.
ua( $userAgent )
-
Returns a reference to the user agent object being used. By default this is an
LWP::UserAgent
object, but you can pass a different object in if you wish. last_response()
-
Returns the
HTTP::Response
object from the last request.
CACHING
In order to make some small improvement in efficiency, WebService::CIA::Source::Web keeps a copy of the data for the last country downloaded in memory.
TO DO
- File system based caching of pages.
- User-definable stack of cached countries, rather than just one.
- Caching of last-modified headers; conditional GET.
AUTHOR
Ian Malpass (ian-cpan@indecorous.com)
COPYRIGHT
Copyright 2003-2007, Ian Malpass
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
The CIA World Factbook's copyright information page (https://www.cia.gov/library/publications/the-world-factbook/docs/contributor_copyright.html) states:
The Factbook is in the public domain. Accordingly, it may be copied
freely without permission of the Central Intelligence Agency (CIA).
SEE ALSO
WebService::CIA, WebService::CIA::Parser, WebService::CIA::Source::DBM