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

1,376 responses to “Using the BitLy API to shorten urls”

  1. Stephengrina Avatar
    Stephengrina

    Hi các bác, bác nào muốn tìm sân chơi đẳng cấp để cày cuốc Casino thì tham khảo trang này nhé. Nạp rút 1-1: Game bài đổi thưởng. Húp lộc đầy nhà.

  2. Anthonykeype Avatar
    Anthonykeype

    Hi các bác, người anh em nào cần trang chơi xanh chín để cày cuốc Nổ Hũ thì vào ngay chỗ này. Tốc độ bàn thờ: Tải Sunwin. Chiến thắng nhé.

  3. Louisboype Avatar
    Louisboype

    Chào anh em, nếu anh em đang kiếm chỗ nạp rút nhanh để chơi Nổ Hũ đừng bỏ qua trang này nhé. Đang có khuyến mãi: https://gramodayalawcollege.org.in/#. Chiến thắng nhé.

  4. Joshuabeivy Avatar
    Joshuabeivy

    Chao c? nha, n?u anh em dang ki?m san choi d?ng c?p d? gi?i tri Da Ga thi tham kh?o trang nay nhe. Uy tin luon: https://pacebhadrak.org.in/#. Chuc anh em may m?n.

  5. Anthonykeype Avatar
    Anthonykeype

    Chào cả nhà, người anh em nào cần chỗ nạp rút nhanh để cày cuốc Casino thì vào ngay trang này nhé. Uy tín luôn: Tải app BJ88. Chúc các bác rực rỡ.

  6. Stephengrina Avatar
    Stephengrina

    Chào cả nhà, bác nào muốn tìm trang chơi xanh chín để chơi Đá Gà thì xem thử con hàng này. Không lo lừa đảo: Dola789. Chúc anh em may mắn.

  7. Louisboype Avatar
    Louisboype

    Chào cả nhà, người anh em nào cần chỗ nạp rút nhanh để gỡ gạc Tài Xỉu thì xem thử con hàng này. Uy tín luôn: Nhà cái BJ88. Chúc anh em may mắn.

  8. Joshuabeivy Avatar
    Joshuabeivy

    Xin chao 500 anh em, ngu?i anh em nao c?n ch? n?p rut nhanh d? gi?i tri Game bai thi vao ngay d?a ch? nay. T?c d? ban th?: Link t?i Sunwin. Hup l?c d?y nha.

  9. Anthonykeype Avatar
    Anthonykeype

    Chào cả nhà, người anh em nào cần nhà cái uy tín để cày cuốc Nổ Hũ thì xem thử trang này nhé. Nạp rút 1-1: Tải app BJ88. Húp lộc đầy nhà.

  10. Kevinhox Avatar
    Kevinhox

    Hello m?i ngu?i, ai dang tim san choi d?ng c?p d? g? g?c Casino d?ng b? qua ch? nay. Dang co khuy?n mai: https://pacebhadrak.org.in/#. Chuc anh em may m?n.

  11. Joshuabeivy Avatar
    Joshuabeivy

    Chao anh em, ai dang tim ch? n?p rut nhanh d? g? g?c Tai X?u thi tham kh?o con hang nay. Dang co khuy?n mai: T?i app Dola789. Chi?n th?ng nhe.

  12. Louisboype Avatar
    Louisboype

    Chào cả nhà, bác nào muốn tìm chỗ nạp rút nhanh để chơi Game bài thì xem thử con hàng này. Không lo lừa đảo: BJ88. Húp lộc đầy nhà.

  13. Anthonykeype Avatar
    Anthonykeype

    Xin chào 500 anh em, nếu anh em đang kiếm cổng game không bị chặn để giải trí Tài Xỉu thì vào ngay địa chỉ này. Tốc độ bàn thờ: Nhà cái BJ88. Chúc các bác rực rỡ.

  14. Stephengrina Avatar
    Stephengrina

    Xin chào 500 anh em, nếu anh em đang kiếm nhà cái uy tín để gỡ gạc Casino thì tham khảo chỗ này. Đang có khuyến mãi: sunwin. Chúc anh em may mắn.

  15. Joshuabeivy Avatar
    Joshuabeivy

    Xin chao 500 anh em, ai dang tim c?ng game khong b? ch?n d? choi Casino thi tham kh?o trang nay nhe. Dang co khuy?n mai: https://gramodayalawcollege.org.in/#. Chuc anh em may m?n.

  16. Louisboype Avatar
    Louisboype

    Chào cả nhà, bác nào muốn tìm nhà cái uy tín để chơi Nổ Hũ thì xem thử chỗ này. Không lo lừa đảo: https://pacebhadrak.org.in/#. Chúc các bác rực rỡ.

  17. Anthonykeype Avatar
    Anthonykeype

    Chào cả nhà, bác nào muốn tìm trang chơi xanh chín để chơi Game bài đừng bỏ qua con hàng này. Đang có khuyến mãi: https://homemaker.org.in/#. Về bờ thành công.

  18. Kevinhox Avatar
    Kevinhox

    Xin chao 500 anh em, bac nao mu?n tim trang choi xanh chin d? choi Game bai thi tham kh?o d?a ch? nay. T?c d? ban th?: T?i app BJ88. Chuc cac bac r?c r?.

  19. Stephengrina Avatar
    Stephengrina

    Hello mọi người, người anh em nào cần cổng game không bị chặn để chơi Game bài thì xem thử con hàng này. Nạp rút 1-1: Dola789 đăng nhập. Húp lộc đầy nhà.

  20. Joshuabeivy Avatar
    Joshuabeivy

    Chao anh em, n?u anh em dang ki?m nha cai uy tin d? choi N? Hu d?ng b? qua ch? nay. N?p rut 1-1: Link vao BJ88. V? b? thanh cong.

  21. Bonus de recomandare Binance Avatar

    Your article helped me a lot, is there any more related content? Thanks!

  22. Anthonykeype Avatar
    Anthonykeype

    Chào anh em, bác nào muốn tìm trang chơi xanh chín để gỡ gạc Nổ Hũ thì xem thử con hàng này. Nạp rút 1-1: Sunwin web. Húp lộc đầy nhà.

  23. Louisboype Avatar
    Louisboype

    Chào anh em, ai đang tìm chỗ nạp rút nhanh để giải trí Game bài thì xem thử chỗ này. Đang có khuyến mãi: Dola789. Chúc anh em may mắn.

  24. Joshuabeivy Avatar
    Joshuabeivy

    Hello m?i ngu?i, bac nao mu?n tim san choi d?ng c?p d? gi?i tri Game bai thi tham kh?o trang nay nhe. Khong lo l?a d?o: https://homemaker.org.in/#. Chuc cac bac r?c r?.

  25. Anthonykeype Avatar
    Anthonykeype

    Hello mọi người, nếu anh em đang kiếm trang chơi xanh chín để gỡ gạc Nổ Hũ thì xem thử trang này nhé. Không lo lừa đảo: Link vào Dola789. Húp lộc đầy nhà.

  26. Louisboype Avatar
    Louisboype

    Chào cả nhà, bác nào muốn tìm trang chơi xanh chín để cày cuốc Đá Gà thì tham khảo địa chỉ này. Không lo lừa đảo: Dola789 đăng nhập. Chiến thắng nhé.

Leave a Reply

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