mirror of
https://github.com/YunoHost/moulinette.git
synced 2024-09-03 20:06:31 +02:00
API bugfixes
This commit is contained in:
parent
655550ec6b
commit
ba0cc75db3
1 changed files with 34 additions and 27 deletions
61
yunohost.tac
61
yunohost.tac
|
@ -167,9 +167,15 @@ def favicon(request):
|
||||||
request.setResponseCode(404, 'Not Found')
|
request.setResponseCode(404, 'Not Found')
|
||||||
return ''
|
return ''
|
||||||
|
|
||||||
|
def is_installed(request):
|
||||||
|
request.setHeader('Access-Control-Allow-Origin', '*') # Allow cross-domain requests
|
||||||
|
request.setResponseCode(200, 'OK')
|
||||||
|
return json.dumps({ 'installed': installed })
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
global action_dict
|
global action_dict
|
||||||
global api
|
global api
|
||||||
|
global installed
|
||||||
|
|
||||||
# Generate API doc
|
# Generate API doc
|
||||||
os.system('python ./generate_api_doc.py')
|
os.system('python ./generate_api_doc.py')
|
||||||
|
@ -180,38 +186,11 @@ def main():
|
||||||
# favicon.ico error
|
# favicon.ico error
|
||||||
api.register('ALL', '/favicon.ico', favicon)
|
api.register('ALL', '/favicon.ico', favicon)
|
||||||
|
|
||||||
# Load & parse yaml file
|
|
||||||
with open('action_map.yml') as f:
|
|
||||||
action_map = yaml.load(f)
|
|
||||||
|
|
||||||
del action_map['general_arguments']
|
|
||||||
for category, category_params in action_map.items():
|
|
||||||
api.register('ALL', '/api/'+ category, api_doc)
|
|
||||||
for action, action_params in category_params['actions'].items():
|
|
||||||
if 'action_help' not in action_params:
|
|
||||||
action_params['action_help'] = ''
|
|
||||||
if 'api' not in action_params:
|
|
||||||
action_params['api'] = 'GET /'+ category +'/'+ action
|
|
||||||
method, path = action_params['api'].split(' ')
|
|
||||||
# Register route
|
|
||||||
if '{' in path:
|
|
||||||
path = path.replace('{', '(?P<').replace('}', '>[^/]+)')
|
|
||||||
api.register(method, path, http_exec)
|
|
||||||
api.register('OPTIONS', path, http_exec)
|
|
||||||
action_dict[action_params['api']] = {
|
|
||||||
'function': 'yunohost_'+ category +'.'+ category +'_'+ action,
|
|
||||||
'help' : action_params['action_help']
|
|
||||||
}
|
|
||||||
if 'arguments' in action_params:
|
|
||||||
action_dict[action_params['api']]['arguments'] = action_params['arguments']
|
|
||||||
|
|
||||||
|
|
||||||
# Register only postinstall action if YunoHost isn't completely set up
|
# Register only postinstall action if YunoHost isn't completely set up
|
||||||
try:
|
try:
|
||||||
with open('/etc/yunohost/installed') as f: pass
|
with open('/etc/yunohost/installed') as f: pass
|
||||||
except IOError:
|
except IOError:
|
||||||
installed = False
|
installed = False
|
||||||
api = APIResource()
|
|
||||||
api.register('POST', '/postinstall', http_exec)
|
api.register('POST', '/postinstall', http_exec)
|
||||||
api.register('OPTIONS', '/postinstall', http_exec)
|
api.register('OPTIONS', '/postinstall', http_exec)
|
||||||
action_dict['POST /postinstall'] = {
|
action_dict['POST /postinstall'] = {
|
||||||
|
@ -219,6 +198,34 @@ def main():
|
||||||
'help' : 'Execute post-install',
|
'help' : 'Execute post-install',
|
||||||
'arguments' : action_map['tools']['postinstall']['arguments']
|
'arguments' : action_map['tools']['postinstall']['arguments']
|
||||||
}
|
}
|
||||||
|
else:
|
||||||
|
# Load & parse yaml file
|
||||||
|
with open('action_map.yml') as f:
|
||||||
|
action_map = yaml.load(f)
|
||||||
|
|
||||||
|
del action_map['general_arguments']
|
||||||
|
for category, category_params in action_map.items():
|
||||||
|
api.register('ALL', '/api/'+ category, api_doc)
|
||||||
|
for action, action_params in category_params['actions'].items():
|
||||||
|
if 'action_help' not in action_params:
|
||||||
|
action_params['action_help'] = ''
|
||||||
|
if 'api' not in action_params:
|
||||||
|
action_params['api'] = 'GET /'+ category +'/'+ action
|
||||||
|
method, path = action_params['api'].split(' ')
|
||||||
|
# Register route
|
||||||
|
if '{' in path:
|
||||||
|
path = path.replace('{', '(?P<').replace('}', '>[^/]+)')
|
||||||
|
api.register(method, path, http_exec)
|
||||||
|
api.register('OPTIONS', path, http_exec)
|
||||||
|
action_dict[action_params['api']] = {
|
||||||
|
'function': 'yunohost_'+ category +'.'+ category +'_'+ action,
|
||||||
|
'help' : action_params['action_help']
|
||||||
|
}
|
||||||
|
if 'arguments' in action_params:
|
||||||
|
action_dict[action_params['api']]['arguments'] = action_params['arguments']
|
||||||
|
|
||||||
|
api.register('ALL', '/installed', is_installed)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
|
Loading…
Reference in a new issue