-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapp.py
executable file
·95 lines (73 loc) · 2.76 KB
/
app.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
from flask import Flask, request, jsonify
import json
from elastic_index import Index
import requests
from os import environ
from flask_cors import CORS
import subprocess
app = Flask(__name__)
cors_origins = [environ.get('FRONTEND_HOST')]
CORS(app, supports_credentials=True, resources={r'/*': {'origins': cors_origins}})
config = {
"url" : environ.get("ELASTICSEARCH_HOST"),
"port" : environ.get("ELASTICSEARCH_PORT"),
"index" : environ.get("ELASTICSEARCH_INDEX"),
}
index = Index(config)
@app.after_request
def after_request(response):
# response.headers['Access-Control-Allow-Origin'] = '*'
# response.headers['Access-Control-Allow-Headers'] = '*'
# response.headers['Access-Control-Allow-Methods'] = 'POST, GET, OPTIONS'
response.headers['Content-type'] = 'application/json'
return response
@app.route("/")
def hello_world():
retStruc = {"app": "Procrustus service", "version": "0.1"}
return json.dumps(retStruc)
@app.route("/facet", methods=['GET','POST'])
def get_facet():
struc = request.get_json()
ret_struc = index.get_facet(struc["name"], struc["amount"], struc["filter"], struc["searchvalues"])
return json.dumps(ret_struc)
@app.route("/nested-facet", methods=['GET'])
def get_nested_facet():
facet = request.args.get("name")
amount = request.args.get("amount")
facet_filter = request.args.get("filter")
ret_struc = index.get_nested_facet(facet + ".keyword", amount, facet_filter)
return json.dumps(ret_struc)
@app.route("/filter-facet", methods=['GET'])
def get_filter_facet():
facet = request.args.get("name")
amount = request.args.get("amount")
facet_filter = request.args.get("filter")
ret_struc = index.get_filter_facet(facet + ".keyword", amount, facet_filter)
return json.dumps(ret_struc)
@app.route("/browse", methods=['POST'])
def browse():
struc = request.get_json()
# ret_struc = index.browse(struc["page"], struc["page_length"], struc["sortorder"] + ".keyword", struc["searchvalues"])
ret_struc = index.browse(struc["page"], struc["page_length"], struc["searchvalues"])
return json.dumps(ret_struc)
@app.get('/typeinfo')
def typeinfo():
if not request.values.get('url'):
return 'No url specified', 400
url = request.values.get('url')
try:
res = requests.head(url, allow_redirects=True)
return jsonify(ok=res.ok,
url=url,
content_type=res.headers['content-type'] if res.ok else None)
except:
return jsonify(ok=False, url=url, content_type=None)
@app.get('/detail')
def get_detail():
rec = request.args.get("rec")
file=f"/data/{rec}_processed.json"
with open(file,"r") as f:
return jsonify(json.load(f))
#Start main program
if __name__ == '__main__':
app.run()