NAME WebService::RESTCountries - A Perl module to interface with the REST Countries (restcountries.eu) webservice. SYNOPSIS use WebService::RESTCountries; my $api = WebService::RESTCountries->new; $api->search_all(); DESCRIPTION WebService::RESTCountries is a Perl client helper library for the REST Countries API (restcountries.eu). DEVELOPMENT Source repo at https://github.com/kianmeng/webservice-restcountries. Docker If you have Docker installed, you can build your Docker container for this project. $ docker build -t webservice-restcountries . $ docker run -it -v $(pwd):/root webservice-restcountries bash # cpanm --installdeps --notest . Milla Setting up the required packages. $ milla authordeps --missing | cpanm $ milla listdeps --missing | cpanm Check you code coverage. $ milla cover Several ways to run the test. $ milla test $ milla test --author --release $ AUTHOR_TESTING=1 RELEASE_TESTING=1 milla test $ AUTHOR_TESTING=1 RELEASE_TESTING=1 milla run prove t/01_instantiation.t $ LOGGING=1 milla run prove t/t/02_request.t Release the module. $ milla build $ milla release METHODS new([%$args]) Construct a new WebService::RESTCountries instance. Optionally takes a hash or hash reference. # Instantiate the class. my $api = WebService::RESTCountries->new; api_url The URL of the API resource. # Instantiate the class by setting the URL of the API endpoints. my $api = WebService::RESTCountries->new(api_url => 'https://example.com/v2/'); # Set through method. $api->api_url('https://example.com/v2/'); cache The cache engine used to cache the web service API calls. By default, it uses file-based caching. # Instantiate the class by setting the cache engine. my $api = WebService::RESTCountries->new( CHI->new( driver => 'File', namespace => 'restcountries', root_dir => $ENV{PWD} . '/tmp/cache/' ) ); # Set through method. $api->cache(CHI->new( driver => 'File', namespace => 'restcountries', root_dir => $ENV{PWD} . '/tmp/cache/' )); fields Show the country data in specified fields. Do this before making any webservice calls. # Instantiate the class by setting the selected fields. my $api = WebService::RESTCountries->new(fields => ['capital', 'currencies', 'name']); # Set through method. $api->fields(['capital', 'currencies', 'name']); my $counties = $api->search_all(); ping() Check whether the API endpoint is currently up. # Returns 1 if up and 0 otherwise. $api->ping(); download([$file_name]) Download the whole countries data as JSON file. Optional path and file name. # Using default path and file name. $api->download(); # Using specific path and file name. $api->download('/tmp/countries.json'); Check whether the API endpoint is currently up. # Returns 1 if up and 0 otherwise. $api->ping(); search_all() Get all the countries. Basically just pull the whole data in JSON format. $api->search_all(); search_by_calling_code($calling_code) Get the details of a country by its calling code, the prefixes for the country phone numbers. $api->search_by_calling_code('60'); search_by_capital_city($capital_city) Get the details of a country by its capital city. # Full name. $api->search_by_capital_city("Kuala Lumpur"); # Partial name. $api->search_by_capital_city("Kuala"); search_by_country_code($country_code) Get the details of a country by its ISO 3166 two-letters or three-letters country code. # Two-letters. $api->search_by_country_code("MY"); # Three-letters. $api->search_by_country_code("MYS"); search_by_country_codes($country_codes) Get the list of country by multiple ISO 3166 two-letters or three-letters country codes. # Two-letters. $api->search_by_country_codes(['MY', 'SG']); # Three-letters. $api->search_by_country_codes(['MYS', 'SGP']); search_by_country_full_name($full_name) Get the details of a country by its full name. $api->search_by_country_full_name("São Tomé and Príncipe"); search_by_country_name($name) Get the details of a country by name, either by native or partial name. # Native name. $api->search_by_country_name("Malaysia"); # Partial name. $api->search_by_country_name("Malays"); search_by_currency($currency) Get the details of a country by ISO 4217 currency code. $api->search_by_currency("MYR"); search_by_language_code($language_code) Get the details of the a country by ISO 639-1 language code. $api->search_by_language_code("ms"); search_by_region($region) Get list of country by region: Africa, Americas, Asia, Europe, Oceania. Region name is case insensitive. $api->search_by_region("Asia"); $api->search_by_region("asia"); search_by_regional_bloc($regional_bloc) Get list of country by regional bloc: EU, EFTA, CARICOM, PA, AU, USAN, EEU, AL, ASEAN, CAIS, CEFTA, NAFTA, SAARC. Regional bloc name is case insensitive. $api->search_by_region_bloc("EU"); $api->search_by_regional_bloc("asean"); COPYRIGHT AND LICENSE This software is Copyright (c) 2018 by Kian Meng, Ang. This is free software, licensed under: The Artistic License 2.0 (GPL Compatible) AUTHOR Kian Meng, Ang