-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathshortlink.py
60 lines (51 loc) · 1.43 KB
/
shortlink.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
import dbm
import random
dbName = "data/shortLink"
uppercase_letters = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
def initialize():
with dbm.open(dbName, 'c') as db:
if "init" in db:
"initialized"
else:
db["init"] = "initialized"
def keyExists(key):
with dbm.open(dbName, 'r') as db:
if key in db:
return True
else:
return False
def keyGen(length:int=5):
random_letters = ""
for i in range(length):
random_letter = random.choice(uppercase_letters)
random_letters += random_letter
return random_letters
def genUniqueKey(length:int=5):
key = keyGen(length)
#print(key)
while keyExists(key) == True:
key = keyGen(length)
print(key)
return key
def addKey(key,url):
with dbm.open(dbName, 'w') as db:
db[key] = url
print(getURL(key))
def getURL(key):
with dbm.open(dbName, 'r') as db:
if key in db:
return str(db[key],encoding='utf-8')
def createURL(url,customkey:str=False,length:int=5):
if customkey == False:
key = genUniqueKey(length)
else:
key = customkey
if keyExists(url) == False:
addKey(key,url)
addKey(url,key)
print("Adding:",f"{key}:{url}")
return(key)
else:
output = getURL(url)
print("Found existing URL:",output)
return(output)