# Zend_Service_ShortUrl

## Overview

URL shorteners have exploded in popularity in the last several years, in large part due to the social nature of the web and the desire to share links. Zend_Service_ShortUrl provides an API for accessing a number of different URL shortener services, with the ability to both create short URLs as well as retrieve the original URL.

Adapters provided include:

- Zend_Service_ShortUrl_JdemCz, which accesses the jdem.cz service.

- Zend_Service_ShortUrl_TinyUrlCom, which accesses the tinyurl.com service.

- Zend_Service_ShortUrl_MetamarkNet, which accesses the metamark.net service.

- Zend_Service_ShortUrl_IsGd, which accesses the is.gd service.

- Zend_Service_ShortUrl_BitLy, which accesses the bit.ly service.

## Quick Start

Using one of the URL shortener services is straightforward. Each URL shortener follows a simple interface that defines two methods: shorten() and unshorten(). Instantiate the class, and call the appropriate method.

    $tinyurl = new Zend_Service_ShortUrl_TinyUrlCom();

    // Shorten a URL:
    $short = $tinyurl->shorten('http://framework.zend.com/'); // http://tinyurl.com/rxtuq

    // Inflate or unshorten a short URL:
    $long  = $tinyurl->unshorten('http://tinyurl.com/rxtuq'); // http://framework.zend.com/

## Available Methods

shorten $url

  Takes the given `$url` and passes it to the service in order to obtain a shortened URL.

  If the provided `$url` is invalid, an exception will be raised.

unshorten $shortenedUrl

  Takes the provided `$shortenedUrl` and passes it to the service in order to obtain the original URL.

  If the provided `$shortenedUrl` is invalid, an exception will be raised.

setHttpClient Zend_Http_Client $httpClient

  Use this method to set the HTTP client used for communicating with the service.

getHttpClient

  Use this method to access the HTTP client attached to the service. By default, this will lazy-load an instance of Zend_Http_Client if no client is yet attached.

## Additional Bit.ly Methods

The bitly API require that authentication credentials be supplied as query arguments. To get started, you'll need a free bitly user account and apiKey. Signup at: http://bitly.com/a/sign_up

bitly currently also supports the OAuth 2 draft specification. You could provide a generated OAuth access token to Zend_Service_ShortUrl_BitLy using setOAuthAccessToken or as constructor argument.

    $bitly = new Zend_Service_ShortUrl_BitLy('username','apiKey');

    // Shorten a URL:
    $short = $bitly->shorten('http://framework.zend.com/'); // http://bit.ly/15Oe0

    // Inflate or unshorten a short URL:
    $long  = $bitly->unshorten('http://bit.ly/15Oe0'); // http://framework.zend.com/

setApiLogin $login, $apiKey

  Takes the required `$login` username and `$apiKey` and passes it to the service.

setOAuthAccessToken $accessToken

  Use the OAuth `$accessToken` for authentication