@@ -221,12 +221,58 @@ def expand(self, tinyurl, apikey=None):
221
221
222
222
urlborg = Urlborg ()
223
223
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
+
224
269
"""Mapping of domain to service class"""
225
270
services = {
226
271
'sandbox' : sandbox ,
227
272
'tinyurl.com' : tinyurl ,
228
273
'tr.im' : trim ,
229
274
'urlborg.com' : urlborg , 'ub0.cc' : urlborg ,
275
+ 'bit.ly' : bitly
230
276
}
231
277
232
278
"""
0 commit comments