moved bit.ly code to a new library

This commit is contained in:
Luke Rogers 2012-04-21 15:55:52 +12:00
parent a5aa62358c
commit b387b15c8f
2 changed files with 34 additions and 29 deletions

View file

@ -1,33 +1,8 @@
# Plugin by Lukeroge
from util import hook, http
from re import match
from urllib2 import urlopen, Request, HTTPError
from urllib import urlencode
class ShortenError(Exception):
def __init__(self, value):
self.value = value
def __str__(self):
return repr(self.value)
def bitly(url, user, apikey):
try:
if url[:8] == "https://":
pass
elif url[:7] != "http://":
url = "http://" + url
params = urlencode({'longUrl': url, 'login': user, 'apiKey': apikey,
'format': 'json'})
j = http.get_json("http://api.bit.ly/v3/shorten?%s" % params)
if j['status_code'] == 200:
return j['data']['url']
raise ShortenError('%s' % j['status_txt'])
except (HTTPError, ShortenError):
return "Could not shorten %s!" % url
from util import hook
from urllib2 import HTTPError
from util.web import bitly, ShortenError
@hook.command
@ -37,4 +12,8 @@ def shorten(inp, bot=None):
api_key = bot.config.get("api_keys", {}).get("bitly_api", None)
if api_key is None:
return "error: no api key set"
return bitly(inp, api_user, api_key)
try:
return bitly(inp, api_user, api_key)
except (HTTPError, ShortenError):
return "Could not shorten %s!" % inp

26
plugins/util/web.py Executable file
View file

@ -0,0 +1,26 @@
""" web.py - handy functions for web services """
import http
from urllib import urlencode
class ShortenError(Exception):
def __init__(self, value):
self.value = value
def __str__(self):
return repr(self.value)
def bitly(url, user, api_key):
""" shortens a URL with the bit.ly API """
if url[:8] == "https://":
pass
elif url[:7] != "http://":
url = "http://" + url
params = urlencode({'longUrl': url, 'login': user, 'apiKey': api_key,
'format': 'json'})
j = http.get_json("http://api.bit.ly/v3/shorten?%s" % params)
if j['status_code'] == 200:
return j['data']['url']
raise ShortenError('%s' % j['status_txt'])