aboutsummaryrefslogtreecommitdiff
path: root/modules/shorturl.py
diff options
context:
space:
mode:
authorGravatar jesopo2019-05-01 08:17:48 +0100
committerGravatar jesopo2019-05-01 08:17:48 +0100
commited57ac7c17ace0906970ddbb0035df7f0f8fb356 (patch)
tree477e9efc5d829c851f3d35ee65170a8e2a918da9 /modules/shorturl.py
parentNo longer prefix stderr with "!", it doesn't really make sense (diff)
signature
Move isgd.py to shorturl.py and switch back to using bit.ly
Diffstat (limited to 'modules/shorturl.py')
-rw-r--r--modules/shorturl.py44
1 files changed, 44 insertions, 0 deletions
diff --git a/modules/shorturl.py b/modules/shorturl.py
new file mode 100644
index 00000000..13503725
--- /dev/null
+++ b/modules/shorturl.py
@@ -0,0 +1,44 @@
+#--require-config bitly-api-key
+
+import re
+from src import ModuleManager, utils
+
+URL_BITLYSHORTEN = "https://api-ssl.bitly.com/v3/shorten"
+
+class Module(ModuleManager.BaseModule):
+ _name = "Short"
+
+ def on_load(self):
+ self.exports.add("shortlink", self._shortlink)
+
+ def _shortlink(self, url):
+ if not re.match(utils.http.REGEX_URL, url):
+ url = "http://%s" % url
+
+ page = utils.http.request(URL_BITLYSHORTEN, get_params={
+ "access_token": self.bot.config["bitly-api-key"],
+ "longUrl": url}, json=True)
+
+ if page and page.data["data"]:
+ return page.data["data"]["url"]
+
+ @utils.hook("received.command.shorten")
+ def shorten(self, event):
+ """
+ :help: Shorten a given URL using the is.gd service
+ :usage: <url>
+ """
+ url = None
+ if len(event["args"]) > 0:
+ url = event["args_split"][0]
+ else:
+ url = event["target"].buffer.find(utils.http.REGEX_URL)
+ if url:
+ url = re.search(utils.http.REGEX_URL, url.message).group(0)
+ if not url:
+ raise utils.EventError("No URL provided/found.")
+
+ if url:
+ event["stdout"].write("Shortened URL: %s" % self._shortlink(url))
+ else:
+ event["stderr"].write("Unable to shorten that URL.")