def run(self): self.serializer = RequestSerializer() action = self.req.headers.get('SOAPAction') if action is None: return "No SOAPAction provided" cookies = self.req.headers.getheader('cookie') self.sess_id = None self.reservation_id = None for cur_cookie in (cookies or '').split('; '): if cur_cookie.startswith("weblabsessionid="): self.sess_id = SessionId('.'.join( cur_cookie[len('weblabsessionid='):].split('.')[:-1])) if cur_cookie.startswith('weblab_reservation_id='): self.reservation_id = SessionId( cur_cookie[len('weblab_reservation_id='):].split('.')[0]) if self.reservation_id is None and self.sess_id is not None: try: reservation_id_str = self.server.get_reservation_id_by_session_id( self.sess_id) if reservation_id_str is not None: self.reservation_id = SessionId(reservation_id_str) except: traceback.print_exc() self.reservation_id = None if self.sess_id is None: return "Not logged in!" length = int(self.req.headers.getheader('content-length')) self.payload = self.req.rfile.read(length) methods = { '"http://ilab.mit.edu/GetLabConfiguration"': self.process_GetLabConfiguration, '"http://ilab.mit.edu/Submit"': self.process_Submit, '"http://ilab.mit.edu/GetExperimentStatus"': self.process_GetExperimentStatus, '"http://ilab.mit.edu/RetrieveResult"': self.process_RetrieveResult, '"http://ilab.mit.edu/SaveAnnotation"': self.process_SaveAnnotation, '"http://ilab.mit.edu/ListAllClientItems"': self.process_ListAllClientItems, '"http://ilab.mit.edu/LoadClientItem"': self.process_LoadClientItem, '"http://ilab.mit.edu/SaveClientItem"': self.process_SaveClientItem, '"http://ilab.mit.edu/GetExperimentInformation"': self.process_GetExperimentInformation, } if not action in methods: return "Action not found" return methods[action]()
# # Author: Pablo Orduña <*****@*****.**> # from __future__ import print_function, unicode_literals from flask import request, make_response from weblab.core.wl import weblab_api import json import traceback from weblab.data.experiments import ExperimentId from weblab.core.coordinator.clients.ilab_batch import RequestSerializer serializer = RequestSerializer() @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( )