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.

