The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

WebService::HealthGraph - A thin wrapper around the Runkeeper (Health Graph) API

VERSION

version 0.000004

SYNOPSIS

    my $runkeeper = WebService::HealthGraph->new(
        debug => 1,
        token => 'foo',
    );

    my $user = $runkeeper->user;

    use Data::Printer;
    p $user->content;

    # Fetch a weight feed

    use DateTime ();
    use URI::FromHash qw( uri );

    my $cutoff = DateTime->now->subtract( days => 7 );

    my $uri = uri(
        path  => '/weight',
        query => { noEarlierThan => $cutoff->ymd },
    );

    my $feed = $runkeeper->get($uri, { feed => 1 });
    p $feed->content;

DESCRIPTION

BETA BETA BETA. The interface is subject to change.

This is a very thin wrapper around the Runkeeper (Health Graph) API. At this point it assumes that you already have an OAuth token to connect with. You can use Mojolicious::Plugin::Web::Auth::Site::Runkeeper to create a token. If that doesn't suit you, patches to add OAuth token retrieval to this module will be happily accepted.

CONSTRUCTOR ARGUMENTS

auto_pagination

Boolean. If enabled, response objects will continue to fetch new result pages as the iterator requires them. Defaults to true.

base_url

The URL of the API. Defaults to https://api.runkeeper.com. This is settable in case you'd need this for mocking.

debug( $bool )

Turns on debugging via LWP::ConsoleLogger. Off by default.

token

OAuth token. Optional, but you'll need to to get any URLs.

ua

A user agent object of the LWP::UserAgent family. If you provide your own, be sure you set the correct default headers required for authentication.

url_map

Returns a map of keys to URLs, as provided by the user endpoint. Runkeeper wants you to use these URLs rather than constructing your own.

uri_for

Gives you the corresponding url (in the form of an URI object) for any key which exists in url_map. You can optionally pass a HashRef of query params to this method.

    my $team_uri =  $runkeeper->uri_for( 'team', { pageSize => 10 } );

    my $friends = $runkeeper->get(
        $runkeeper->uri_for( 'team', { pageSize => 10 } ),
        { feed => 1 }
    );

url_for

Convenience method which points to url_for. Will be removed in a later release.

user

The WebService::HealthGraph::Response object for the user endpoint.

user_id

The id of the user as provided by the user endpoint.

METHODS

get( $url, $optional_args )

This module will try to do the right thing with the minimum amount of information:

    my $weight_response = $runkeeper->get( 'weight', { feed => 1 } );
    if ( $weight_response->success ) {
        ...
    }

Optionally, you can provide your own Accept (or other) headers:

    my $record_response = $runkeeper->get(
        'records',
        {
            headers =>
                { Accept => 'application/vnd.com.runkeeper.Records+json' }
        );

Returns a WebService::HealthGraph::Response object.

CAVEATS

Most response content will contain a HashRef, but the records endpoint returns a response with an ArrayRef in the content.

AUTHOR

Olaf Alders <olaf@wundercounter.com>

COPYRIGHT AND LICENSE

This software is copyright (c) 2016 by Olaf Alders.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.