· 5 years ago · Feb 16, 2020, 04:54 AM
1from app import app
2from flask import session, redirect, url_for, request, make_response
3from markupsafe import escape
4import json
5from dotenv import load_dotenv
6import os
7#import torch
8#import hnswlib
9import numpy as np
10#import torchvision
11from flask_cors import CORS, cross_origin
12import datetime
13import base64
14import io
15from PIL import Image
16
17#from .models import encoders
18#from torch.utils.data import DataLoader
19#from .data import transform
20#config = {'size' : 224, 'batch_size' : 1, 'num_workers' : 0, 'device' : 'cuda', 'embedding_size' : 512}
21#p = hnswlib.Index(space = 'l2', dim = config['embedding_size']) # possible options are l2, cosine or ip
22#p.load_index('kek.idx')
23
24load_dotenv()
25
26HACKER_KEY = os.getenv("SECRET_SESSION")
27SECRET_KEY = os.getenv("SECRET_KEY")
28app.secret_key = SECRET_KEY.encode()
29cors = CORS(app, expose_headers=['Access-Control-Allow-Origin'], supports_credentials=True)
30app.config['CORS_HEADERS'] = 'Content-Type'
31
32@app.route('/', methods=['POST'])
33@cross_origin()
34def index():
35 key = request.headers.get('Authorization')
36 print(key)
37 if HACKER_KEY == base64.b64decode(key.split(' ')[1]).decode():
38 image = np.array(Image.open(io.BytesIO(request.get_data())))
39 print('+++')
40 # transforms_ = transform.Compose([transform.Pad(size=(224)),
41 # transform.ToTensor(),
42 # transform.Normalize((0.485, 0.456, 0.406), (0.229, 0.224, 0.225))])
43 # image,_,_ = transforms_(img)
44 # device = torch.device("cpu")
45 # img = image.to(device).unsqueeze(0)
46 # out = feature_extractor(img)
47 # vec = [out.numpy().squeeze()]
48 # q_labels, q_distances = p.knn_query(feature, k = k)
49 #ВОТ ТУТ q_labels содержит индексы ближайших пикч
50 #CODE HERE
51 resp = {"success": "200"}
52 return json.dumps(resp), 200
53 resp = {"error": "Forbidden"}
54
55 return json.dumps(resp), 403
56
57@app.route('/login', methods=['POST'])
58@cross_origin()
59def login():
60 if request.method == 'POST':
61 req = request.get_json()
62 #if req == None:
63 #req = request.get_data()
64 print(req)
65 if HACKER_KEY == req['password']:
66 resp = make_response({"token":base64.b64encode(bytes(HACKER_KEY, 'utf-8')).decode()})
67 return resp
68 resp = make_response({"error": "Forbidden"})
69 resp.headers.add('Access-Control-Allow-Origin', '*')
70 return resp, 403
71
72@app.errorhandler(404)
73@cross_origin()
74def not_found(error):
75 resp = {"error": "Such page does not exist"}
76 return json.dumps(resp), 404