NAME

Webservice::Swapi - A Perl module to interface with the Star Wars API (swapi.co) webservice.

SYNOPSIS

use Webservice::Swapi;

$swapi = Webservice::Swapi->new;

# Check if API server is up
my $resources = $swapi->ping();

# Get information of all available resources
my $resources = $swapi->resources();

# View the JSON schema for people resource
my $schema = $swapi->schema('people');

# Searching
my $results = $swapi->search('people', 'solo');

# Get resource item
my $item = $swapi->get_object('films', '1');

DESCRIPTION

Webservice::Swapi is a Perl client helper library for the Star Wars API (swapi.co).

DEVELOPMENT

Source repo at https://github.com/kianmeng/webservice-swapi.

Docker

If you have Docker installed, you can build your Docker container for this project.

$ docker build -t webservice-swapi .
$ docker run -it -v $(pwd):/root webservice-swapi bash

Carton

To setup the development environment and run the test using Carton.

$ carton install
$ export PERL5LIB=$(pwd)/local/lib/perl5/
$ export PATH=$HOME/perl5/bin:$(pwd)/local/bin:$PATH

To enable Perl::Critic test cases, enable the flag.

$ AUTHOR_TESTING=1 carton exec -- prove -Ilib -lv t

Minilla

To use Minilla instead. This will update the README.md file from the source.

$ cpanm Minilla
$ minil build
$ minil test
$ FAKE_RELEASE=1 minil release # testing
$ minil release # actual

METHODS

new([%$args])

Construct a new Webservice::Swapi instance. Optionally takes a hash or hash reference.

api_url

The URL of the API resource.

# Instantiate the class.
my $swapi = Webservice::Swapi->new;

# Set the API URL.
my $swapi = Webservice::Swapi->new({api_url => 'http://example.com/api/'});

get_object($object, [$format])

Get full details of a object or resource. Optionally takes a returned format.

# Get the details of different available object using id.
my $object = $swapi->get_object('films', '1');

# Get the result in different format.
my $object_json = $swapi->get_object('films', '1', 'json');
my $object_wookie = $swapi->get_object('films', '1', 'wookiee');

ping()

Check if the API service or server is responding to a request.

my $server_status = $swapi->ping();

resources([$format])

List down all the available objects. Optionally takes a returned format.

# Get all available resources or objects.
my $resources = $swapi->resources();

# Similarly but in different format.
my $resources_json = $swapi->resources('json');
my $resources_wookie = $swapi->resources('wookie');

schema($object)

Show the data structure of a resource or object.

# Get the schema / structure of a resource or object.
my $schema = $swapi->schema('people');

search($object, $keyword, [$format])

Searching by keywords. Takes both an object and keywords. Optionally takes a returned format.

# Search a resource or object by keywords.
my $results = $swapi->search('people', 'solo');

# Or in different format.
my $results = $swapi->search('people', 'solo', 'json');
my $results = $swapi->search('people', 'solo', 'wookiee');

COPYRIGHT AND LICENSE

This software is Copyright (c) 2017 by Kian Meng, Ang.

This is free software, licensed under:

The Artistic License 2.0 (GPL Compatible)

AUTHOR

Kian-Meng, Ang <kianmeng@users.noreply.github.com>