def shorten_url(): data = request.json long_url = data["url"] shortener = Shortener(long_url) short_url = shortener.shorten_url() api_response = APIResponse(200, short_url) return jsonify(api_response.serialize())
def find_shortname(self, url): shortener = Shortener() nb = 2 while nb < 10: shortname = shortener.shorten(url, nb) o = self.get_by_key(shortname) if not o: return shortname nb = nb + 1
def handle(self, event): url = re.search(self.r_pattern, event.line).group(0) try: sub = reddit.submission(url='https://' + url) except praw.exceptions.ClientException: # If the link is broken we should not do anything at all return sub_time = datetime.utcfromtimestamp(sub.created).strftime( '%Y/%m/%d@%H:%M' ) # converts from POSIX timestamp to human readable message = '[REDDIT] ' + sub.title if sub.is_self: message = message + \ ' (self.' + sub.subreddit.display_name + ')' else: message = message + ' to r/' + sub.subreddit.display_name if sub.author: author = 'u/' + sub.author.name else: author = '[deleted]' if sub.over_18: message = message + ' 05[NSFW]' # TODO implement per-channel settings db, and make this able to # kick message = (message + ' | ' + author + ' | ' + sub_time) self.say(event.channel, message + ' | ' + Shortener.reddit_link(self, url))
class TestShortener(unittest.TestCase): url = "http://example.com" def setUp(self): self.shortener = Shortener() def test_init_with_clean_slate(self): self.assertEqual(self.shortener.id, 0) self.assertEqual(self.shortener.urls, {}) def test_shorten_url_and_expand_token(self): token = self.shortener.shorten(TestShortener.url) expanded_url = self.shortener.expand(token) self.assertEqual(TestShortener.url, expanded_url) self.assertNotEqual(TestShortener.url, token) self.assertNotEqual(token, self.shortener.shorten("http://another.com")) def test_expand_nonexistant_token(self): self.assertIsNone(self.shortener.expand("herpderp"))
from flask import Flask, render_template, request, redirect from shortener import Shortener domain = input("If you have setup domain in HOSTS enter here >> ") if not domain or domain == "": domain = "127.0.0.1" app = Flask("lazycnt") shortener = Shortener() @app.route("/", methods=["POST", "GET"]) def main(): if request.method == "POST": redirect_url = request.form["redirect_url"] generated_key = shortener.generate_key(redirect_url) if generated_key["error"]: return render_template("index.html", error=generated_key["error"]) return render_template("index.html", domain=domain, key=generated_key["key"]) return render_template("index.html") @app.route("/<key>") def redirect_to(key): url = shortener.get_url(key) if url: return redirect(url) return render_template("index.html", error="Tf is that key") app.run("", "80") shortener.cleanup()
import cStringIO import base64 import sys from shortener import Shortener import add_qrtable import time from flask import Flask, redirect, request, Response from database import DB from artifactObjects.BHL import BHLObject app = Flask(__name__) db = DB() bhl = BHLObject() shortener = Shortener() def json_resp(content): resp = Response(content, mimetype='application/json') resp.headers['Access-Control-Allow-Origin'] = '*' resp.headers['Access-Control-Allow-Method'] = 'GET, POST, OPTIONS' resp.headers['Access-Control-Allow-Headers'] = 'Content-Type' return resp @app.route("/") def home(): return 'Redirect to front-end!'
def setUp(self): self.shortener = Shortener()
from shortener import Shortener if __name__ == '__main__': shortener = Shortener() print(shortener.shorten("google.com")) print(shortener.fetch(shortener.shorten("google.com"))) hash = shortener.shorten("google.com") shortener.fetch(hash) shortener.fetch(hash) shortener.fetch(hash) shortener.fetch(hash) print(shortener.fetch(hash))
def getShortener(self, url=None): shortener = Shortener() return shortener.genShortenerBitly(url=url)