From f21fe16ceb917784d519b2e645e950890ad1cf99 Mon Sep 17 00:00:00 2001 From: Mark Stockley Date: Tue, 30 May 2017 10:48:45 +0100 Subject: [PATCH] Added support for Multi-Channel Funnels API --- lib/Net/Google/Analytics.pm | 9 ++++++--- lib/Net/Google/Analytics/Request.pm | 13 +++++++++---- lib/Net/Google/Analytics/Response.pm | 3 +-- 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/lib/Net/Google/Analytics.pm b/lib/Net/Google/Analytics.pm index 0930b86..ccb95a1 100644 --- a/lib/Net/Google/Analytics.pm +++ b/lib/Net/Google/Analytics.pm @@ -13,6 +13,7 @@ use Net::Google::Analytics::Row; use URI; sub new { + my $package = shift; my $self = bless({}, $package); @@ -63,9 +64,12 @@ sub new_request { } sub _uri { - my ($self, $req, $start_index, $max_results) = @_; + my ($self, $req, $start_index, $max_results, $service) = @_; + + $service = 'ga'; + $service = 'realtime' if $req->service && $req->service eq 'realtime'; + $service = 'mcf' if $req->service && $req->service eq 'mcf'; - my $service = $req->realtime ? 'realtime' : 'ga'; my $uri = URI->new( "https://www.googleapis.com/analytics/v3/data/$service" ); @@ -376,4 +380,3 @@ Sets the L object to use for HTTP(S) requests. You only have to call this method if you want to provide your own user agent. =cut - diff --git a/lib/Net/Google/Analytics/Request.pm b/lib/Net/Google/Analytics/Request.pm index 8ee46dd..5a1ada0 100644 --- a/lib/Net/Google/Analytics/Request.pm +++ b/lib/Net/Google/Analytics/Request.pm @@ -7,6 +7,7 @@ use warnings; use Class::XSAccessor accessors => [ qw( + service realtime ids start_date end_date @@ -43,7 +44,9 @@ sub _params { my @required = qw(ids metrics); - if (!$self->{realtime}) { + if ($self->{realtime}) { + $self->{service} = 'realtime'; + } else { push(@required, qw(start_date end_date)); } @@ -109,9 +112,12 @@ Lnew_request( service => 'realtime', ...); + my $req = $analytics->new_request( service => 'mcf', ...); =head2 ids @@ -152,4 +158,3 @@ Required =head2 quota_user =cut - diff --git a/lib/Net/Google/Analytics/Response.pm b/lib/Net/Google/Analytics/Response.pm index 9d5fcb8..6942ab0 100644 --- a/lib/Net/Google/Analytics/Response.pm +++ b/lib/Net/Google/Analytics/Response.pm @@ -63,7 +63,7 @@ sub _parse_json { sub _parse_column_name { my $name = shift; - my ($res) = $name =~ /^(?:ga|rt):(\w{1,64})\z/ + my ($res) = $name =~ /^(?:ga|mcf|rt):(\w{1,64})\z/ or die("invalid column name: $name"); # convert camel case @@ -313,4 +313,3 @@ categories. }); =cut -