Skip to content

Commit db4b9c4

Browse files
committed
Added bit.ly service. Implemented shrink and expand methods.
1 parent 1c9ff3f commit db4b9c4

File tree

2 files changed

+47
-0
lines changed

2 files changed

+47
-0
lines changed

README

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ Supported URL shortening services:
1313
tinyurl.com (shrink only)
1414
tr.im
1515
urlborg.com
16+
bit.ly
1617

1718
Language: Python
1819
Website: http://gitorious.org/shorty

shorty.py

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -221,12 +221,58 @@ def expand(self, tinyurl, apikey=None):
221221

222222
urlborg = Urlborg()
223223

224+
class Bitly(Service):
225+
226+
version = '2.0.1'
227+
228+
def __init__(self, login=None, apikey=None, password=None):
229+
self.login = login
230+
self.apikey = apikey
231+
self.password = password
232+
233+
def _setup(self):
234+
parameters = {'version': self.version}
235+
if self.apikey:
236+
parameters['apiKey'] = self.apikey
237+
parameters['login'] = self.login
238+
username_pass = None
239+
elif self.password:
240+
username_pass = (self.login, self.password)
241+
else:
242+
raise ShortyError('Must set an apikey or password')
243+
return parameters, username_pass
244+
245+
def shrink(self, bigurl):
246+
if not self.login:
247+
raise ShortyError('Must set a login')
248+
parameters, username_pass = self._setup()
249+
parameters['longUrl'] = bigurl
250+
resp = request('http://api.bit.ly/shorten', parameters, username_pass)
251+
jdata = json.loads(resp.read())
252+
if jdata['errorCode'] != 0:
253+
raise ShortyError(jdata['errorMessage'])
254+
return str(jdata['results'][bigurl]['shortUrl'])
255+
256+
def expand(self, tinyurl):
257+
if not self.login:
258+
raise ShortyError('Must set a login')
259+
parameters, username_pass = self._setup()
260+
parameters['shortUrl'] = tinyurl
261+
resp = request('http://api.bit.ly/expand', parameters, username_pass)
262+
jdata = json.loads(resp.read())
263+
if jdata['errorCode'] != 0:
264+
raise ShortyError(jdata['errorMessage'])
265+
return str(jdata['results'].values()[0]['longUrl'])
266+
267+
bitly = Bitly()
268+
224269
"""Mapping of domain to service class"""
225270
services = {
226271
'sandbox': sandbox,
227272
'tinyurl.com': tinyurl,
228273
'tr.im': trim,
229274
'urlborg.com': urlborg, 'ub0.cc': urlborg,
275+
'bit.ly': bitly
230276
}
231277

232278
"""

0 commit comments

Comments
 (0)