|
|
@@ -88,14 +88,14 @@ def application(environ, start_response):
|
|
|
|
|
|
def get_raw(split, query, environ):
|
|
|
try:
|
|
|
- group = int(split[1])
|
|
|
+ group_id = int(split[1])
|
|
|
server_id = int(split[3])
|
|
|
start = datetime.datetime.strptime(query['start'], '%Y-%m-%d').date()
|
|
|
end = datetime.datetime.strptime(query['end'], '%Y-%m-%d').date()
|
|
|
except (IndexError, KeyError, ValueError):
|
|
|
raise HTTPException(400, '')
|
|
|
|
|
|
- server_dir = path.join(DATA_DIR, str(group), str(server_id))
|
|
|
+ server_dir = path.join(DATA_DIR, str(group_id), str(server_id))
|
|
|
rval = {}
|
|
|
c = start
|
|
|
while c <= end:
|
|
|
@@ -179,8 +179,8 @@ def get_stats(split, query, environ):
|
|
|
return stats
|
|
|
|
|
|
def post_datum(split, query, environ):
|
|
|
+ group_id = get_group(split, environ)
|
|
|
try:
|
|
|
- group = int(split[1])
|
|
|
server_id = int(split[3])
|
|
|
except (IndexError, ValueError):
|
|
|
raise HTTPException(400, '')
|
|
|
@@ -189,7 +189,7 @@ def post_datum(split, query, environ):
|
|
|
diff = set(body.keys()).symmetric_difference(set(fileio.TEMPLATE.keys()))
|
|
|
raise HTTPException(400, 'post body had missing or extra keys: ' + ','.join(diff))
|
|
|
|
|
|
- server_dir = path.join(DATA_DIR, str(group), str(server_id))
|
|
|
+ server_dir = path.join(DATA_DIR, str(group_id), str(server_id))
|
|
|
try:
|
|
|
os.makedirs(server_dir)
|
|
|
except OSError as e:
|
|
|
@@ -232,27 +232,31 @@ def post_datum(split, query, environ):
|
|
|
return {'status': 'ok'}
|
|
|
|
|
|
def get_servers(split, query, environ):
|
|
|
- try:
|
|
|
- group = int(split[1])
|
|
|
- except (IndexError, ValueError):
|
|
|
- raise HTTPException(400, '')
|
|
|
-
|
|
|
- return db.get_servers(group)
|
|
|
+ group_id = get_group(split, environ)
|
|
|
+ return db.get_servers(group_id)
|
|
|
|
|
|
def register_server(split, query, environ):
|
|
|
- try:
|
|
|
- group = int(split[1])
|
|
|
- except (IndexError, ValueError):
|
|
|
- raise HTTPException(400, '')
|
|
|
+ group_id = get_group(split, environ)
|
|
|
body = load_json_body(environ)
|
|
|
try:
|
|
|
hostname = body['hostname']
|
|
|
except KeyError:
|
|
|
raise HTTPException(400, 'post body didn\'t contain "hostname" key')
|
|
|
|
|
|
- server_id = db.create_server(group, hostname)
|
|
|
+ server_id = db.create_server(group_id, hostname)
|
|
|
return {'server_id': server_id}
|
|
|
|
|
|
+def get_group(split, environ):
|
|
|
+ try:
|
|
|
+ group_id = int(split[1])
|
|
|
+ except (IndexError, ValueError):
|
|
|
+ raise HTTPException(400, '/v1/[group_id] - group_id was not valid int')
|
|
|
+ if 'HTTP_AUTHORIZATION' not in environ:
|
|
|
+ raise HTTPException(401, 'no api key passed in Authorization header')
|
|
|
+ if db.get_api_key(group_id) != environ['HTTP_AUTHORIZATION']:
|
|
|
+ raise HTTPException(403, 'api key did not match')
|
|
|
+ return group_id
|
|
|
+
|
|
|
def load_json_body(environ):
|
|
|
try:
|
|
|
body = json.load(environ['wsgi.input'])
|