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
        # cpanm --installdeps --notest .

 Milla

    Setting up the required packages.

        $ cpanm Dist::Milla
        $ 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

    Release the module.

        $ milla build
        $ milla release

METHODS

 new([%$args])

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

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

  api_url

    The URL of the API resource.

        # Instantiate the class by setting the URL of the API endpoints.
        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>

