Using the BitLy API to shorten urls

I was asked to place Twitter messages with product links when new products were added to a webshop. I’ve used my own Twitter class for posting the first test Tweet then I went looking for a shorten url a service to shorten the product links.

There are many url shorten services available on the internet, one of these services is Bitly.
The reasons why I’ve chosen Bitly:
– Urls don’t expire after a period of time.
– Bitly provides a click url summary (although Google Analytics can be used for this instead)
– Urls are short in length so i could use the remaining Tweet length for a small product description.
– And more important, they provide an easy to use API.
– Authentication does not require a password, we can use our API key instead.

Before we can connect to the API, we need a Bitly account, the account can be created at http://bit.ly/ to obtain a free API key.

The communication process is quite simple:
– Authenticate with your Bitly username and API key
– Call the right Bitly API url with the correct parameters for the action we want to perform
– Process the result

Below are some snippets of my Bitly class:

class BitLy
{
	/**
	 * Version of the bit ly api
	 * @var string
	 */
	private $sApiVersion = '2.0.1';

	/**
	 * Url of the api
	 * @var string
	 */
	private $sApiUrl = 'http://api.bit.ly/';

	/**
	 * username
	 * @var string
	 */
	private $sUsername;

	/**
	 * apikey
	 * @var string
	 */
	private $sApiKey;

	/**
	 * Set username and apikey
	 *
	 * @param string $sUsername
	 * @param string $sApiKey
	 * @return void
	 */
	public function  __construct($sUsername, $sApiKey) {
		$this->setUsername($sUsername);
		$this->setApiKey($sApiKey);
	}

	...

	/**
	 * shorten
	 *
	 * @param string $sLongUrl
	 * @return object with shortend url and hash
	 */
	public function shorten($sLongUrl)
	{
		return $this->process('shorten', urlencode($sLongUrl));
	}

	/**
	 * expand
	 *
	 * @param string $sShortUrl
	 * @return object with original url
	 */
	public function expand($sShortUrl)
	{
		return $this->process('expand', urlencode($sShortUrl));
	}

	...

	/**
	 * process, checks the action and returns the result
	 *
	 * @param string $sAction
	 * @param string $sParam
	 */
	private function process($sAction, $sUrlToParse)
	{
		// Check the url, if no http is present, add it
		if(strstr($sUrlToParse, 'http://') === false) {
			$sUrlToParse = 'http://'.$sUrlToParse;
		}

		// Compose action url
		$sParam = ($sAction == 'shorten') ? 'longUrl='.$sUrlToParse : 'shortUrl='.$sUrlToParse;
		$sActionUrl = $this->sApiUrl.$sAction.'?version='.$this->sApiVersion.'&'.$sParam.'&login='.$this->sUsername.'&apiKey='.$this->sApiKey.'&format=xml';

		// Get data
		libxml_use_internal_errors(true);
		$oData = simplexml_load_file($sActionUrl);
		if(!$oData) {
			throw new Exception('Api returned an invalid response!');
		}

		// Check for errors
		if($oData->statusCode == 'ERROR') {
			throw new Exception($oData->errorCode.': '.$oData->errorMessage);
		}

		// Build result object
		$oResult				= new stdClass();
		$oResult->requestedUrl	= $sUrlToParse;
		$oResult->resultUrl	= (string)$oData->results->nodeKeyVal->shortUrl;
		$oResult->hash		= (string)$oData->results->nodeKeyVal->hash;

		return $oResult;
	}

The reason why I build a result object is because of the fact that the server where the class is deployed doesn’t support JSON but JSON is also available as return format.

Furthermore, generated urls can be saved to our Bitly account history by adding an additional parameter to the url (history = 1). Another nice option of the API is to shorten the URL to a keyword, this can be achieved by sending the (keyword=your keyword) parameter along.

The complete API manual can be found at Google Code which also describes how to get click statistics of the shortened links.

Comments

2,350 responses to “Using the BitLy API to shorten urls”

  1. RobertFup Avatar
    RobertFup

    pet meds online canada pet meds п»їdog medication online

  2. AndrewMuh Avatar
    AndrewMuh

    Mens RX Index: Mens RX Index – Mens RX Index

  3. TylerShets Avatar
    TylerShets

    http://petmedsmonitor.com/# online pet pharmacy

  4. Henryaloth Avatar
    Henryaloth
  5. Williamchabe Avatar
    Williamchabe

    pet meds for dogs: Vet Rx Index – pet prescriptions online

  6. AndrewMuh Avatar
    AndrewMuh

    pet med: Vet Rx Index – pet pharmacy

  7. Henryaloth Avatar
    Henryaloth
  8. TylerShets Avatar
    TylerShets

    https://certifiedcanadarx.com/# canadian pharmacy no rx needed

  9. AndrewMuh Avatar
    AndrewMuh

    legitimate canadian pharmacy: Certified Canada Rx – Certified Canada Rx

  10. Williamchabe Avatar
    Williamchabe

    how to get ed pills: buy erectile dysfunction pills online – buy erectile dysfunction treatment

  11. Henryaloth Avatar
    Henryaloth

    https://petmedsmonitor.com/# pet meds for dogs

  12. TylerShets Avatar
    TylerShets

    https://certifiedcanadarx.shop/# legal to buy prescription drugs from canada

  13. RobertFup Avatar
    RobertFup

    Mens RX Index ed pills cheap pills for ed online

  14. AndrewMuh Avatar
    AndrewMuh

    pet pharmacy: vet pharmacy – dog prescriptions online

  15. Henryaloth Avatar
    Henryaloth
  16. TylerShets Avatar
    TylerShets

    http://petmedsmonitor.com/# online pet pharmacy

  17. Williamchabe Avatar
    Williamchabe

    canadian pharmacy king: prescription drugs canada buy online – reliable canadian online pharmacy

  18. AndrewMuh Avatar
    AndrewMuh

    pet pharmacy online: vet pharmacy online – pet drugs online

  19. TylerShets Avatar
    TylerShets
  20. AndrewMuh Avatar
    AndrewMuh

    best canadian online pharmacy reviews: canadian mail order pharmacy – precription drugs from canada

  21. binance konto skapande Avatar

    Your enticle helped me a lot, is there any more related content? Thanks! https://accounts.binance.com/es-MX/register?ref=GJY4VW8W

  22. RobertFup Avatar
    RobertFup

    online vet pharmacy Vet Rx Index canada pet meds

  23. Williamchabe Avatar
    Williamchabe

    ed prescriptions online: Mens RX Index – Mens RX Index

  24. Henryaloth Avatar
    Henryaloth
  25. TylerShets Avatar
    TylerShets
  26. AndrewMuh Avatar
    AndrewMuh

    Certified Canada Rx: online canadian pharmacy – Certified Canada Rx

  27. Henryaloth Avatar
    Henryaloth
  28. AndrewMuh Avatar
    AndrewMuh

    Mens RX Index: cheapest ed treatment – ed online prescription

  29. TylerShets Avatar
    TylerShets
  30. Williamchabe Avatar
    Williamchabe

    Certified Canada Rx: Certified Canada Rx – canadian online pharmacy

  31. Henryaloth Avatar
    Henryaloth

    https://mensrxindex.com/# where can i get ed pills

  32. RobertFup Avatar
    RobertFup

    Certified Canada Rx canadian pharmacy 365 best canadian pharmacy to buy from

  33. AndrewMuh Avatar
    AndrewMuh

    Certified Canada Rx: safe canadian pharmacy – Certified Canada Rx

  34. TylerShets Avatar
    TylerShets
  35. Henryaloth Avatar
    Henryaloth

    https://petmedsmonitor.com/# pet meds official website

  36. Williamchabe Avatar
    Williamchabe

    discount pet meds: Vet Rx Index – pet meds official website

  37. AndrewMuh Avatar
    AndrewMuh

    vet pharmacy: pet pharmacy – dog medicine

  38. TylerShets Avatar
    TylerShets

    http://certifiedcanadarx.com/# Certified Canada Rx

  39. Henryaloth Avatar
    Henryaloth

    http://petmedsmonitor.com/# online vet pharmacy

  40. AndrewMuh Avatar
    AndrewMuh

    Certified Canada Rx: Certified Canada Rx – canada drugstore pharmacy rx

  41. Williamchabe Avatar
    Williamchabe

    Mens RX Index: Mens RX Index – cheap ed meds online

  42. TylerShets Avatar
    TylerShets

    https://certifiedcanadarx.com/# reddit canadian pharmacy

  43. Henryaloth Avatar
    Henryaloth

    https://mensrxindex.com/# what is the cheapest ed medication

  44. RobertFup Avatar
    RobertFup

    pet rx online vet pharmacy pet pharmacy

  45. AndrewMuh Avatar
    AndrewMuh

    vet pharmacy online: Vet Rx Index – dog medicine

  46. TylerShets Avatar
    TylerShets

    https://certifiedcanadarx.com/# Certified Canada Rx

  47. Henryaloth Avatar
    Henryaloth

    http://certifiedcanadarx.com/# is canadian pharmacy legit

  48. AndrewMuh Avatar
    AndrewMuh

    ed meds by mail: best online ed medication – cheap boner pills

  49. Williamchabe Avatar
    Williamchabe

    Certified Canada Rx: Certified Canada Rx – cheap canadian pharmacy online

Leave a Reply

Your email address will not be published. Required fields are marked *