@weblab_api.route_web('/ilab/')
def ilab():
    action = request.headers.get('SOAPAction')
    if action is None:
        return "No SOAPAction provided"

    if weblab_api.ctx.session_id is None:
        return "Not logged in!"

    if weblab_api.ctx.reservation_id is None:
        try:
            reservation_id_str = weblab_api.api.get_reservation_id_by_session_id()
            weblab_api.ctx.reservation_id = reservation_id_str
        except:
            traceback.print_exc()

    methods = {
        '"http://ilab.mit.edu/GetLabConfiguration"'      : process_GetLabConfiguration,
        '"http://ilab.mit.edu/Submit"'                   : process_Submit,
        '"http://ilab.mit.edu/GetExperimentStatus"'      : process_GetExperimentStatus,
        '"http://ilab.mit.edu/RetrieveResult"'           : process_RetrieveResult,
        '"http://ilab.mit.edu/SaveAnnotation"'           : process_SaveAnnotation,
        '"http://ilab.mit.edu/ListAllClientItems"'       : process_ListAllClientItems,
        '"http://ilab.mit.edu/LoadClientItem"'           : process_LoadClientItem,
        '"http://ilab.mit.edu/SaveClientItem"'           : process_SaveClientItem,
        '"http://ilab.mit.edu/GetExperimentInformation"' : process_GetExperimentInformation,
    }

    if not action in methods:
        return "Action not found"

    response = make_response(methods[action]())
    response.content_type = 'text/xml'
    if hasattr(weblab_api.ctx, 'other_cookies'):
        for name, value in weblab_api.ctx.other_cookies:
            response.set_cookie(name, value, path = weblab_api.ctx.location)
    return response
dataset/ETHPy150Open weblabdeusto/weblabdeusto/server/src/weblab/core/web/ilab.py/ilab/original