-
Notifications
You must be signed in to change notification settings - Fork 4
/
app.py
83 lines (70 loc) · 2.42 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
from flask import Flask, request, abort, make_response, jsonify
import json
from urllib.parse import urlparse
base =[{"name": "datacenter-1", "metadata": {"monitoring": {"enabled": "true"},"limits": {"cpu": {"enabled": "false","value": "300m"}}}}, {"name": "datacenter-2","metadata": {"monitoring": {"enabled": "true"},"limits": {"cpu": {"enabled": "true","value": "250m"}}}}]
app = Flask(__name__)
app.config["DEBUG"] = True
@app.route('/', methods=['GET'])
def home():
return "<h1>Distant Reading Archive</h1><p>This site is a prototype API for distant reading of science fiction novels.</p>"
#read all
@app.route('/configs', methods=['GET'])
def config():
#result = json.dumps(base)
return jsonify({'base': base})
#return "<p>{}</p>",result
#read one
@app.route('/configs/<name>',methods=['GET'])
def read_one(name):
task = [task for task in base if task['name'] == name]
if len(task) == 0:
abort(404)
return jsonify({name: task[0]})
@app.route('/configs', methods=['POST'])
#create one
def create(name):
if not request.json or not 'name' in request.json:
abort(400)
task = {
'name': request.json['name'],
'metadata': request.json.get('metadata', ""),
}
base.append(task)
return jsonify({name: task}), 201
#update
@app.route('/configs',methods = ['PUT','PATCH'])
def update(name):
task = [task for task in base if task['name'] == name]
if len(task) == 0:
abort(404)
if not request.json:
abort(400)
if 'metadata' in request.json:
abort(400)
task[0]['name'] = request.json.get('name', task[0]['name'])
task[0]['metadata'] = request.json.get('metadata', task[0]['metadata'])
return jsonify({name: task[0]})
#delete
@app.route('/configs',methods = ['DELETE'])
def delete(name):
task = [task for task in base if task['name'] == name]
if len(task) == 0:
abort(404)
base.remove(task[0])
return jsonify({'result': True})
@app.route('/search',methods = ['GET'])
def search():
url = request.url
u = urlparse(url)
query = u.query
ss = query.split("=")
key = ss[0]
print(key)
value = ss[1]
print(value)
for i in range(len(base)):
if key == value in base[i]:
print(base[i])
return base[i]
if __name__ == "__main__":
app.run()