PHP: Google URL Shortener (With Authorization Key): analytics

Google provides URL shortening service goo.gl along with an API. In one of our previous post, we discussed how to make anonymous calls to the service, especailly for shortening, expanding and analytics. But anonymous calls has certain limits, you can not make a large number of calls in a single day. So you can make use of the authorization key. If you haven’t got one, get one from here.

Let’s see the program for URL expansion.

Note that you must substitute YOUR_KEY_HERE with your own authorization key

<?php

/*Base URL of the Service*/
$BASEURL = "https://www.googleapis.com/urlshortener/";

/*Version of the service*/
$VERSION = "v1";

/*Service*/
$SERVICE = "url";

/*Type of the content, e.g. text/xml, application/json*/
$CONTENT_TYPE = "Content-Type: application/json";

/*API name*/
$REQUEST = "shortUrl";

/*Authorization key*/
$KEY='YOUR_KEY_HERE';

function printDetails($hash) {
    foreach($hash as $key => $value){
        if (is_array($value)) {
            print "$key:n";
            foreach($value as $val) {
                if(is_object($val) || is_array($val)){
                     printDetails($val);
                }
                else{
                     print "$val,";
                }
            }
            print "n";
        }
        else if (!is_object($value)) {
            print "$key: $valuen";
        }
        else {
            print "$key:n";
            printDetails($value);
        }
    }
}

function get_response($URL, $type) {

    if(!function_exists('curl_init')) {
    die ("Curl PHP package not installedn");
    }

    /*Initializing CURL*/
    $curlHandle = curl_init();

    /*The URL to be downloaded is set*/
    curl_setopt($curlHandle, CURLOPT_URL, $URL);
    curl_setopt($curlHandle, CURLOPT_HEADER, false);
    curl_setopt($curlHandle, CURLOPT_HTTPHEADER, array($type));
    curl_setopt($curlHandle, CURLOPT_RETURNTRANSFER, 1);

    /*Now execute the CURL, download the URL specified*/
    $response = curl_exec($curlHandle);

    /*Return the response as it is, let the application process it accordingly*/
    return $response;
}

/*Specify the url to be expanded*/

if (sizeof($argv) != 2) {
  echo "Usage: $argv[0] urln";
  exit;
}

$url = "$BASEURL$VERSION/$SERVICE";

print "URL: $urln";
print "Analytics of the URL to be found: $argv[1]n";

$response = get_response($url."?key=$KEY&$REQUEST=$argv[1]&projection=FULL", $CONTENT_TYPE);

/*Printing the response on to the console*/
if (isset($response)) {
   $dresponse = json_decode($response);
   if (json_last_error() == JSON_ERROR_NONE){
       if (isset($dresponse->{'longUrl'})) {
           print "======================================================n";
           print "More Details:n";
           print "======================================================n";
           printDetails($dresponse);
           print "======================================================n";
       }
   }
}
else {
   print "Failed to get a responsen";
   exit(1);
}
?>

Let’s execute the program

URL: https://www.googleapis.com/urlshortener/v1/url
Analytics of the URL to be found: http://goo.gl/nhfUT
======================================================
More Details:
======================================================
kind: urlshortener#url
id: http://goo.gl/nhfUT
longUrl: http://example.com/
status: OK
created: 2011-01-11T17:04:27.649+00:00
analytics:
allTime:
shortUrlClicks: 3
longUrlClicks: 3
referrers:
count: 3
id: Unknown/empty

countries:
count: 3
id: IN

browsers:
count: 2
id: Firefox-4.0
count: 1
id: Firefox

platforms:
count: 2
id: Other Unix
count: 1
id: Macintosh

month:
shortUrlClicks: 3
longUrlClicks: 3
referrers:
count: 3
id: Unknown/empty

countries:
count: 3
id: IN

browsers:
count: 2
id: Firefox-4.0
count: 1
id: Firefox

platforms:
count: 2
id: Other Unix
count: 1
id: Macintosh

week:
shortUrlClicks: 3
longUrlClicks: 3
referrers:
count: 3
id: Unknown/empty

countries:
count: 3
id: IN

browsers:
count: 2
id: Firefox-4.0
count: 1
id: Firefox

platforms:
count: 2
id: Other Unix
count: 1
id: Macintosh

day:
shortUrlClicks: 2
longUrlClicks: 2
referrers:
count: 2
id: Unknown/empty

countries:
count: 2
id: ABC

browsers:
count: 2
id: Firefox-4.0

platforms:
count: 2
id: Other Unix

twoHours:
shortUrlClicks: 2
longUrlClicks: 2
referrers:
count: 2
id: Unknown/empty

countries:
count: 2
id: ABC

browsers:
count: 2
id: Firefox-4.0

platforms:
count: 2
id: Other Unix

======================================================
Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s