From e5e2db15b2380047d67fc1c854adc441dc60fd1e Mon Sep 17 00:00:00 2001 From: Valentin Lorentz Date: Sun, 2 Sep 2012 10:06:33 +0200 Subject: [PATCH] ShrinkUrl: Implement @expand. Closes GH-392. --- plugins/ShrinkUrl/plugin.py | 31 ++++++++++++++++++++++++++++++- plugins/ShrinkUrl/test.py | 7 +++++++ 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/plugins/ShrinkUrl/plugin.py b/plugins/ShrinkUrl/plugin.py index dd9032780..dc959b3b0 100644 --- a/plugins/ShrinkUrl/plugin.py +++ b/plugins/ShrinkUrl/plugin.py @@ -46,9 +46,12 @@ class CdbShrunkenUrlDB(object): def __init__(self, filename): self.dbs = {} cdb = conf.supybot.databases.types.cdb - for service in conf.supybot.plugins.ShrinkUrl.default.validStrings: + def register_service(service): dbname = filename.replace('.db', service.capitalize() + '.db') self.dbs[service] = cdb.connect(dbname) + for service in conf.supybot.plugins.ShrinkUrl.default.validStrings: + register_service(service) + register_service('Expand') def get(self, service, url): return self.dbs[service][url] @@ -320,6 +323,32 @@ class ShrinkUrl(callbacks.PluginRegexp): irc.error(str(e)) x0 = thread(wrap(x0, ['url'])) + def _getExpandUrl(self, url): + url = utils.web.urlquote(url) + try: + return self.db.get('Expand', url) + except KeyError: + text = utils.web.getUrl('http://api.longurl.org/v2/expand?url=' + url) + text = text.decode() + text = text.split('', 1)[0] + self.db.set('Expand', url, text) + return text + + @internationalizeDocstring + def expand(self, irc, msg, args, url): + """ + + Returns an expanded version of . + """ + try: + expandurl = self._getExpandUrl(url) + m = irc.reply(expandurl) + if m is not None: + m.tag('shrunken') + except ShrinkError, e: + irc.error(str(e)) + expand = thread(wrap(expand, ['url'])) + Class = ShrinkUrl # vim:set shiftwidth=4 softtabstop=4 expandtab textwidth=79: diff --git a/plugins/ShrinkUrl/test.py b/plugins/ShrinkUrl/test.py index 15eb7a94e..ea5fb1b5e 100644 --- a/plugins/ShrinkUrl/test.py +++ b/plugins/ShrinkUrl/test.py @@ -130,4 +130,11 @@ class ShrinkUrlTestCase(ChannelPluginTestCase): shrink.minimumLength.setValue(origLen) shrink.nonSnarfingRegexp.setValue(origRegexp) + def testExpand(self): + self.assertResponse('expand http://x0.no/0l2k', self.udUrl) + self.assertResponse('expand http://x0.no/0l2k', self.udUrl) + self.assertResponse('expand http://x0.no/0l2j', self.sfUrl) + self.assertResponse('expand http://x0.no/0l2j', self.sfUrl) + self.assertResponse('expand http://x0.no/0l2k', self.udUrl) + # vim:set shiftwidth=4 softtabstop=4 expandtab textwidth=79: