A Node.js url shortener and expander powered by Google
Switch branches/tags
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
lib
test
.gitignore
.travis.yml
README.md
cli.js
package.json

README.md

Build Status NPM version

Installation

npm install -g goo.gl

Command-line Usage

$ goo.gl www.google.com
http://www.google.com -> http://goo.gl/fbsS

$ goo.gl http://goo.gl/fbsS
http://goo.gl/fbsS -> http://www.google.com/

$ goo.gl www.google.com http://goo.gl/fbsS nba.com
http://goo.gl/fbsS -> http://www.google.com/
http://www.google.com -> http://goo.gl/fbsS
http://nba.com -> http://goo.gl/d1T8

$ goo.gl --key aBcDeFGhIjKLMnOPqRsT www.spotify.com
http://www.spotify.com/ -> http://goo.gl/cJFAL

It'll shorten and/or expand one or more URLs at a time.

Module Usage

Most methods return promises.

var googl = require('goo.gl');

// Set a developer key (_required by Google_; see http://goo.gl/4DvFk for more info.)
googl.setKey('aBcDeFGhIjKLMnOPqRsT');

// Get currently set developer key
googl.getKey();

// Shorten a long url and output the result
googl.shorten('http://www.google.com/')
    .then(function (shortUrl) {
        console.log(shortUrl);
    })
    .catch(function (err) {
        console.error(err.message);
    });

// Expand a goo.gl url and output the result
googl.expand('http://goo.gl/fbsS')
    .then(function (longUrl) {
        console.log(longUrl);
    })
    .catch(function (err) {
        console.error(err.message);
    });

// Expand a goo.gl url and pass userIp for capping purposes
googl.expand('http://goo.gl/fbsS', { userIp: '127.0.0.1' })
    .then(function (longUrl) {
        console.log(longUrl);
    })
    .catch(function (err) {
        console.error(err.message);
    });

// Shorten a goo.gl url and pass quotaUser for capping purposes
// See: https://developers.google.com/console/help/#cappingusage
googl.shorten('www.spotify.com', { quotaUser: 'UserID' })
    .then(function (shortUrl) {
        console.log(shortUrl);
    })
    .catch(function (err) {
        console.error(err.message);
    });

// Shorten a goo.gl url and pass a referer to be used with referer restrictions.
// See: https://support.google.com/googleapi/answer/6310037?hl=en
googl.shorten('www.spotify.com', { referer: 'my.domain.com' })
    .then(function (shortUrl) {
        console.log(shortUrl);
    })
    .catch(function (err) {
        console.error(err.message);
    });

// Look up a short URL's analytics
// See: https://developers.google.com/url-shortener/v1/getting_started#url_analytics
googl.analytics('http://goo.gl/fbsS', {projection: 'ANALYTICS_CLICKS'})
    .then(function(result) {        
        console.log(result);
    })
    .catch(function (err) {
        console.error(err.message);
    });

googl.analytics('http://goo.gl/fbsS', {projection: 'FULL'})
    .then(function(result) {        
        console.log(result);
    })
    .catch(function (err) {
        console.error(err.message);
    });

googl.analytics('http://goo.gl/fbsS', {projection: 'ANALYTICS_TOP_STRINGS'})
    .then(function(result) {        
        console.log(result);
    })
    .catch(function (err) {
        console.error(err.message);
    });

//default to projection=FULL
googl.analytics('http://goo.gl/fbsS')
    .then(function(result) {        
        console.log(result);
    })
    .catch(function (err) {
        console.error(err.message);
    });