-
Notifications
You must be signed in to change notification settings - Fork 0
/
server.py
129 lines (103 loc) · 3.84 KB
/
server.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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
from flask import Flask, send_file, request
from flask_cors import CORS, cross_origin
from create_meme import CreateMeme as meme
import os, io
from PIL import Image
from dotenv import load_dotenv
import pymongo
load_dotenv()
def loadDB():
global db
user = os.getenv("USERNAME")
pwd = os.getenv("PASSWORD")
clusterNAME = os.getenv("CLUSTER")
cluster = pymongo.MongoClient(f"mongodb+srv://{user}:{pwd}@cluster0.fsnin.mongodb.net/test", connect = False)
db = cluster.demo[clusterNAME]
# Init Server
app = Flask(__name__)
loadDB()
# Apply App CORS
CORS(app)
app.config["CORS_HEADERS"] = "Content-Type"
app.config["IMAGE_UPLOADS"] = "./meme/"
@app.route('/', methods = ['GET'])
def home():
return "Hello, I'm here"
@app.route("/ping", methods = ["POST", "GET"])
@cross_origin(origin = "*")
def add():
return "Yeah, it's me"
@app.route('/10guy', methods = ['POST', 'GET'])
@cross_origin(origin = "*")
def tenGUY():
if request.method == 'POST':
top_text = request.form['top']
bottom_text = request.form['bottom']
else:
top_text = request.args['top']
bottom_text = request.args['bottom']
meme.createbyCol('10GUY.jpg', top_text, bottom_text)
filename = r"./result.jpg"
return send_file(filename, mimetype='image/jpg')
@app.route('/alien', methods = ['POST', 'GET'])
@cross_origin(origin = "*")
def alien():
if request.method == 'POST':
top_text = request.form['top']
bottom_text = request.form['bottom']
else:
top_text = request.args['top']
bottom_text = request.args['bottom']
meme.createbyCol('alien.jpg', top_text, bottom_text)
filename = r"./result.jpg"
return send_file(filename, mimetype='image/jpg')
@app.route('/button', methods = ['POST', 'GET'])
@cross_origin(origin = "*")
def button():
if request.method == 'POST':
top_text = request.form['top']
bottom_text = request.form['bottom']
else:
top_text = request.args['top']
bottom_text = request.args['bottom']
meme.createbyRow('button.jpg', top_text, bottom_text)
filename = r"./result.jpg"
return send_file(filename, mimetype='image/jpg')
@app.route('/upload', methods = ['POST'])
@cross_origin(origin = "*")
def upload():
username = request.form['username']
password = request.form['password']
requests = request.files
if requests:
image = requests['file']
image_bytes = io.BytesIO()
im = Image.open(image)
im.save(image_bytes, format='JPEG')
info = {
'file' : {
'name' : image.filename,
'image' : image_bytes.getvalue()
}
}
find = db.find_one({'username': username, 'password': password})
if find:
db.update_one({'username': username, 'password': password}, {'$set' : info})
else:
db.insert_one({'username': username, 'password': password, **info})
return {"Message": f"Uploaded file {image.filename}"}
return {"Message": "Please upload a file"}
@app.route('/getfile', methods = ['GET', 'POST'])
@cross_origin(origin = "*")
def getfile():
username = request.args['username']
password = request.args['password']
file = request.args['file']
find = db.find_one({'username': username, 'password': password})
if not find:
return {"Message": "Your login data is not in the database"}
pil_img = Image.open(io.BytesIO(find['file']['image']))
pil_img.save(app.config["IMAGE_UPLOADS"] + find['file']['name'])
return send_file(app.config["IMAGE_UPLOADS"] + file, mimetype='image/jpg')
if __name__ == "__main__":
app.run(debug = True)