Files
OpenSpace/support/server/request.wsgi
2016-09-07 16:32:19 +02:00

53 lines
1.8 KiB
Python

import os.path
import imp
from cgi import parse_qs, escape
responseHeader = [('Content-Type', 'text/plain')]
baseUrl = %REQUIRED% URL TO THE BASE DIRECTORY OF FILES
baseFile = %REQUIRED% LOCAL PATH TO THE BASE DIRECTORY OF FILES
baseRequest = %REQUIRED% LOCAL PATH TO THE DIRECTORY OF REQUESTS
def find_file(identifier, file_version, application_version):
file = identifier + "_v" + application_version + "_v" + file_version
if os.path.isfile(baseFile + file):
# If the direct file exists, it lists all necessary files line by line
with open(baseFile + file, "r") as f:
return True, f.read()
elif os.path.isfile(baseRequest + file + '.py'):
# If the direct file doesn't exist, we look for a python script that
# will generate the returns string dynamically
module = imp.load_source('files', baseRequest + file + '.py')
return True, module.files()
else:
# If neither exists, an unknown file was requested
return False, "Could not find identifier '" + file + "'"
def application(environ, start_response):
parameters = parse_qs(environ.get('QUERY_STRING', ''))
if 'identifier' in parameters:
file = escape(parameters['identifier'][0])
else:
start_response('400 Bad Request', responseHeader)
return ['No identifier provided']
if 'file_version' in parameters:
file_version = escape(parameters['file_version'][0])
else:
file_version = "1"
if 'application_version' in parameters:
application_version = escape(parameters['application_version'][0])
else:
application_version = "1"
status_ok, url = find_file(file, file_version, application_version)
if (status_ok):
start_response('200 OK', responseHeader)
else:
start_response('400 Bad Request', responseHeader)
return [url]