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,048 responses to “Using the BitLy API to shorten urls”

  1. DiegoMog Avatar
    DiegoMog

    medicine mexico: mexipharmacy reviews – mexico city pharmacy

  2. MichaelKek Avatar
    MichaelKek

    https://certicanpharmacy.shop/# canadian online drugs

  3. Edwardtom Avatar
    Edwardtom

    farmacia mexicana en chicago: My Mexican Pharmacy – pharmacy mexico

  4. Taylorsmump Avatar
    Taylorsmump

    http://certicanpharmacy.com/# reputable canadian pharmacy

  5. MichaelKek Avatar
    MichaelKek

    https://certicanpharmacy.com/# online canadian pharmacy reviews

  6. Edwardtom Avatar
    Edwardtom

    canadian pharmacy online reviews: safe online pharmacies in canada – CertiCanPharmacy

  7. DiegoMog Avatar
    DiegoMog

    vet pharmacy: VetFree Meds – online vet pharmacy

  8. Taylorsmump Avatar
    Taylorsmump

    https://vetfreemeds.shop/# vet pharmacy online

  9. Binance代码 Avatar

    Can you be more specific about the content of your article? After reading it, I still have some doubts. Hope you can help me.

  10. MichaelKek Avatar
    MichaelKek
  11. Edwardtom Avatar
    Edwardtom

    pet pharmacy online: best pet rx – п»їdog medication online

  12. Taylorsmump Avatar
    Taylorsmump

    https://vetfreemeds.com/# online vet pharmacy

  13. DiegoMog Avatar
    DiegoMog

    My Mexican Pharmacy: My Mexican Pharmacy – My Mexican Pharmacy

  14. Edwardtom Avatar
    Edwardtom

    My Mexican Pharmacy: My Mexican Pharmacy – my mexican pharmacy

  15. MichaelKek Avatar
    MichaelKek

    https://mymexicanpharmacy.com/# My Mexican Pharmacy

  16. Taylorsmump Avatar
    Taylorsmump
  17. Edwardtom Avatar
    Edwardtom

    pharmacy mexico online: My Mexican Pharmacy – My Mexican Pharmacy

  18. Larryfig Avatar
    Larryfig

    CertiCanPharmacy CertiCanPharmacy CertiCanPharmacy

  19. DiegoMog Avatar
    DiegoMog

    My Mexican Pharmacy: My Mexican Pharmacy – My Mexican Pharmacy

  20. Taylorsmump Avatar
    Taylorsmump

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

  21. Edwardtom Avatar
    Edwardtom

    My Mexican Pharmacy: My Mexican Pharmacy – My Mexican Pharmacy

  22. cuenta abierta en Binance Avatar

    Thank you for your sharing. I am worried that I lack creative ideas. It is your article that makes me full of hope. Thank you. But, I have a question, can you help me?

  23. Edwardtom Avatar
    Edwardtom

    CertiCanPharmacy: rate canadian pharmacies – reputable canadian pharmacy

  24. DiegoMog Avatar
    DiegoMog

    My Mexican Pharmacy: My Mexican Pharmacy – My Mexican Pharmacy

  25. MichaelKek Avatar
    MichaelKek

    https://certicanpharmacy.shop/# global pharmacy canada

  26. Taylorsmump Avatar
    Taylorsmump
  27. Larryfig Avatar
    Larryfig

    www canadianonlinepharmacy CertiCanPharmacy CertiCanPharmacy

  28. Edwardtom Avatar
    Edwardtom

    best mexican pharmacy: mexico drug store – My Mexican Pharmacy

  29. MichaelKek Avatar
    MichaelKek

    https://mymexicanpharmacy.com/# My Mexican Pharmacy

  30. Taylorsmump Avatar
    Taylorsmump

    https://certicanpharmacy.com/# escrow pharmacy canada

  31. DiegoMog Avatar
    DiegoMog

    hydrocodone mexico pharmacy: My Mexican Pharmacy – My Mexican Pharmacy

  32. Edwardtom Avatar
    Edwardtom

    discount pet meds: pet med – best pet rx

  33. MichaelKek Avatar
    MichaelKek

    http://vetfreemeds.com/# pet meds official website

  34. Edwardtom Avatar
    Edwardtom

    CertiCanPharmacy: CertiCanPharmacy – CertiCanPharmacy

  35. Larryfig Avatar
    Larryfig

    can i order online from a mexican pharmacy mexican pharmacy online My Mexican Pharmacy

  36. MichaelKek Avatar
    MichaelKek

    https://mymexicanpharmacy.com/# mexican pharmacies near me

  37. DiegoMog Avatar
    DiegoMog

    CertiCanPharmacy: CertiCanPharmacy – CertiCanPharmacy

  38. Taylorsmump Avatar
    Taylorsmump
  39. Edwardtom Avatar
    Edwardtom

    northern pharmacy canada: CertiCanPharmacy – CertiCanPharmacy

  40. MichaelKek Avatar
    MichaelKek

    http://mymexicanpharmacy.com/# My Mexican Pharmacy

  41. Taylorsmump Avatar
    Taylorsmump

    https://mymexicanpharmacy.com/# order meds from mexico

  42. DiegoMog Avatar
    DiegoMog

    best pet rx: online vet pharmacy – pet drugs online

  43. Edwardtom Avatar
    Edwardtom

    My Mexican Pharmacy: My Mexican Pharmacy – pharmacia mexico

  44. MichaelKek Avatar
    MichaelKek

Leave a Reply

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