NAME
    Mojo::GoogleAnalytics - Extract data from Google Analytics using Mojo
    UserAgent

SYNOPSIS
      my $ga     = Mojo::GoogleAnalytics->new("/path/to/credentials.json");
      my $report = $ga->batch_get({
        viewId     => "ga:152749100",
        dateRanges => [{startDate => "7daysAgo", endDate => "1daysAgo"}],
        dimensions => [{name => "ga:country"}, {name => "ga:browser"}],
        metrics    => [{expression => "ga:pageviews"}, {expression => "ga:sessions"}],
        orderBys   => [{fieldName => "ga:pageviews", sortOrder => "DESCENDING"}],
        pageSize   => 10,
      });

      print $report->rows_to_table(as => "text");

DESCRIPTION
    Mojo::GoogleAnalytics is a Google Analytics client which allow you to
    extract data non-blocking.

    This module is work in progress and currently EXPERIMENTAL. Let me know
    if you start using it or has any feedback regarding the API.

ATTRIBUTES
  authorization
      $hash_ref = $self->authorization;

    Holds authorization data, extracted by "authorize". This can be useful
    to set from a cache if Mojo::GoogleAnalytics objects are created and
    destroyed frequently, but with the same credentials.

  client_email
      $str = $self->client_email;

    Example: "some-app@some-project.iam.gserviceaccount.com".

  client_id
      $str = $self->client_id;

    Example: "103742165385019792511".

  private_key
      $str = $self->private_key;

    Holds the content of a pem file that looks like this:

      -----BEGIN PRIVATE KEY-----
      ...
      ...
      -----END PRIVATE KEY-----

  ua
      $ua = $self->ua;
      $self = $self->ua(Mojo::UserAgent->new);

    Holds a Mojo::UserAgent object.

METHODS
  authorize
      $self = $self->authorize;
      $self = $self->authorize(sub { my ($self, $err) = @_; });

    This method will set "authorization". Note that this method is
    automatically called from inside of "batch_get", unless already
    authorized.

  batch_get
      $report = $self->batch_get($query);
      $self = $self->batch_get($query, sub { my ($self, $err, $report) = @_ });

    Used to extract data from Google Analytics. $report will be a
    Mojo::Collection if $query is an array ref, and a single
    Mojo::GoogleAnalytics::Report object if $query is a hash.

    $err is a string on error and false value on success.

  from_file
      $self = $self->from_file("/path/to/credentials.json");

    Used to load attributes from a JSON credentials file, generated from
    <https://console.developers.google.com/apis/credentials>. Example file:

      {
        "type": "service_account",
        "project_id": "cool-project-238176",
        "private_key_id": "01234abc6780dc2a3284851423099daaad8cff92",
        "private_key": "-----BEGIN PRIVATE KEY-----...\n-----END PRIVATE KEY-----\n",
        "client_email": "some-name@cool-project-238176.iam.gserviceaccount.com",
        "client_id": "103742165385019792511",
        "auth_uri": "https://accounts.google.com/o/oauth2/auth",
        "token_uri": "https://accounts.google.com/o/oauth2/token",
      }

    Note: The JSON credentials file will probably contain more fields than
    is listed above.

  new
      $self = Mojo::GoogleAnalytics->new(%attrs);
      $self = Mojo::GoogleAnalytics->new(\%attrs);
      $self = Mojo::GoogleAnalytics->new("/path/to/credentials.json");

    Used to construct a new Mojo::GoogleAnalytics object. Calling "new()"
    with a single argument will cause "from_file" to be called with that
    argument.

AUTHOR
    Jan Henning Thorsen

COPYRIGHT AND LICENSE
    This program is free software, you can redistribute it and/or modify it
    under the terms of the Artistic License version 2.0.

