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

  1. Darrenplors Avatar
    Darrenplors

    best online pharmacy india indianpharmacy com indianpharmacy com

  2. ThomasRUM Avatar
    ThomasRUM

    п»їlegitimate online pharmacies india: TrustRx India – pharmacy website india

  3. Patrickvew Avatar
    Patrickvew

    MedicoBridge RX: MedicoBridge RX – MedicoBridge RX

  4. Brianbeate Avatar
    Brianbeate

    https://trustrxindia.shop/# online shopping pharmacy india

  5. AnthonyTap Avatar
    AnthonyTap
  6. ThomasRUM Avatar
    ThomasRUM

    MedBridge Pharmacy: MedBridge Pharmacy – MedBridge Pharmacy

  7. Patrickvew Avatar
    Patrickvew

    top 10 online pharmacy in india: TrustRx India – indian pharmacies safe

  8. Darrenplors Avatar
    Darrenplors

    indian pharmacy online top 10 pharmacies in india indian pharmacy online

  9. Brianbeate Avatar
    Brianbeate

    https://medicobridgerx.shop/# online mexican pharmacies

  10. ThomasRUM Avatar
    ThomasRUM

    MedicoBridge RX: MedicoBridge RX – best mexican online pharmacy

  11. Patrickvew Avatar
    Patrickvew

    cheapest online pharmacy india: TrustRx India – top 10 pharmacies in india

  12. AnthonyTap Avatar
    AnthonyTap

    https://trustrxindia.com/# india online pharmacy

  13. ThomasRUM Avatar
    ThomasRUM

    top 10 pharmacies in india: TrustRx India – best online pharmacy india

  14. Patrickvew Avatar
    Patrickvew

    online shopping pharmacy india: best online pharmacy india – india online pharmacy

  15. Darrenplors Avatar
    Darrenplors

    MedBridge Pharmacy canadian pharmacy no prescription needed MedBridge Pharmacy

  16. ThomasRUM Avatar
    ThomasRUM

    farmacia mexicana online: pharmacy in mexico online – pharmacy mexico online

  17. Brianbeate Avatar
    Brianbeate

    http://trustrxindia.com/# indian pharmacy online

  18. Patrickvew Avatar
    Patrickvew

    MedicoBridge RX: MedicoBridge RX – pharmacy online

  19. b"asta binance h"anvisningskod Avatar

    Your point of view caught my eye and was very interesting. Thanks. I have a question for you. https://www.binance.com/join?ref=JW3W4Y3A

  20. ThomasRUM Avatar
    ThomasRUM

    world pharmacy india: TrustRx India – mail order pharmacy india

  21. Darrenplors Avatar
    Darrenplors

    Online medicine order top 10 pharmacies in india buy prescription drugs from india

  22. Patrickvew Avatar
    Patrickvew

    mexican online pharmacies: MedicoBridge RX – MedicoBridge RX

  23. AnthonyTap Avatar
    AnthonyTap

    https://medbridgepharmacy.com/# online pharmacy cialis

  24. ThomasRUM Avatar
    ThomasRUM

    MedicoBridge RX: online mexican pharmacies – MedicoBridge RX

  25. Patrickvew Avatar
    Patrickvew

    MedicoBridge RX: mexican online pharmacy – buying prescription drugs in mexico

  26. ThomasRUM Avatar
    ThomasRUM

    online pharmacy india: mail order pharmacy india – best india pharmacy

  27. Patrickvew Avatar
    Patrickvew

    MedBridge Pharmacy: top online pharmacy – northwest pharmacy canada

  28. ThomasRUM Avatar
    ThomasRUM

    online shopping pharmacy india: india pharmacy mail order – buy medicines online in india

  29. Patrickvew Avatar
    Patrickvew

    online pharmacies in mexico: online mexico pharmacy – MedicoBridge RX

  30. AnthonyTap Avatar
    AnthonyTap

    http://medbridgepharmacy.com/# canadian pharmacies that deliver to the us

  31. ThomasRUM Avatar
    ThomasRUM

    MedBridge Pharmacy: MedBridge Pharmacy – MedBridge Pharmacy

  32. Patrickvew Avatar
    Patrickvew

    pharmacy website india: TrustRx India – Online medicine home delivery

  33. ThomasRUM Avatar
    ThomasRUM

    prescriptions from mexico: mexico pet pharmacy – pharmacy in mexico online

Leave a Reply

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