· 5 years ago · Aug 20, 2020, 12:42 PM
1@sync_to_async
2@csrf_exempt
3def secretPost(request):
4 if request.method == 'POST':
5 data = request.POST.dict()
6 if 'text' in data and 'key' in data:
7 k = returnKey(data['key'])
8 fernet_key = Fernet(k)
9 encrypted = fernet_key.encrypt(data['text'].encode())
10 secret_key = "".join([chr(random.choice([*range(65,91),*range(97,123)])) for i in range(16)])
11 obj = Secret(text = encrypted, secret_key = secret_key)
12 obj.save()
13 print('key ' + str(obj.secret_key) + ' was added')
14 return HttpResponse(str(obj.secret_key))
15 return HttpResponse('payload is invalid, please provide "text" and "key"')
16 return HttpResponse('request is not POST')
17
18
19@sync_to_async
20def secretGet(request, secret_key):
21 if request.method == 'GET':
22 data = request.GET.dict()
23 if 'key' in data:
24 try:
25 objs = Secret.objects.filter(secret_key=secret_key)
26 if len(objs) == 0:
27 return HttpResponse('secret not found')
28 obj = objs[0]
29 k = returnKey(data['key'])
30 fernet_key = Fernet(k)
31 decrypted = fernet_key.decrypt(obj.text.tobytes())
32 return HttpResponse(decrypted.decode())
33 except Exception as e:
34 return HttpResponse(e)
35 return HttpResponse("no key provided!")
36 return HttpResponse("request is not GET")
37