-
Jonas Leder authoredJonas Leder authored
api.py 2.85 KiB
from flask import jsonify, render_template
from sqlite3 import connect
from makeqr import makeQR
def apiGet(request, url_scheme, s, sAPI, passwordProtected):
try:
userID = sAPI.dumps(s.loads(request.cookies.get('userID')))
except:
userID = ""
return render_template("apiDocs.html", apikey=userID, domain=request.headers['Host'], url_scheme=url_scheme, passwordProtected=passwordProtected)
def apiPost(request, url_scheme, domain, sAPI, passwordProtected, password):
username = "error"
try:
username = sAPI.loads(request.form['apikey'])
print(username)
except:
pass
try:
short = request.form['short']
except:
return jsonify(
status="1",
message="short link missing"
)
try:
longURL = request.form['long']
except:
return jsonify(
status="2",
message="link to short is missing"
)
domain_ = short.split("/")[0]
if not domain_ in domain:
return jsonify(
status="3",
message="domain for short link is not in allowed domain list"
)
if passwordProtected:
try:
pw = request.form["password"]
if( pw != password):
return jsonify(
status="5",
message="Wrong password."
)
except:
return jsonify(
status="5",
message="Wrong password."
)
with connect('db/urls.db') as conn: #Check if another user already used the short link
cursor = conn.cursor()
res = cursor.execute('SELECT LONG_URL FROM WEB_URL WHERE SHORT_URL=?', [short])
try:
short2 = res.fetchone()
already_used = False
if short2 is not None:
already_used = True
except:
pass
if not already_used: #If short link wasn't used before, insert the link in the Database.
res = cursor.execute(
'INSERT INTO WEB_URL (LONG_URL, SHORT_URL, USERNAME) VALUES (?, ?, ?)',
[longURL, short, username]
)
try:
request.form['qr']
qr64 = "data:image/jpeg;base64," + makeQR(url_scheme + "://" + short)
return jsonify(
status="0",
message="ok",
qr=qr64
)
except:
return jsonify(
status="0",
message="ok"
)
else:
return jsonify(
status="4",
message="short url already in use"
)
if (__name__ == "__main__"):
print("This file is not made fore direct call, please run the main.py")
exit()