Example #1
0
def doRootOperation(context, details, operation, payload):
    """ """
    try:
        klass = details['klass']
        func = getattr(klass, operation)
        if payload is not None:
            param = makeObject(payload)
        else:
            param = None
        result = func(context, param)
        return makeOKResult(result)
    except AttributeError:
        return BadURL()
Example #2
0
def doRootOperation(context, details, operation, payload):
    """ """
    try:
        klass = details['klass'];
        func = getattr(klass, operation)
        if payload is not None:
            param = makeObject(payload)
        else:
            param = None
        result = func(context, param)
        return makeOKResult(result);
    except AttributeError:
        return BadURL()
Example #3
0
    def _doHandle(self, httpOperation):
        """Respond to a GET request."""
        try:
            if self.path.startswith(
                    '/webapi/session') and httpOperation is 'GET':
                session = sessionManager.getSessionFromHttpHeaders(
                    self.headers, storage)
                if session is None:
                    session = sessionManager.createSession(storage)
                result = makeOKResult(session.clientSession)
            else:
                session = sessionManager.getSessionFromHttpHeaders(
                    self.headers, storage)
                if session is None:
                    result = makeNotAuthorized(session.clientSession)
                else:
                    payload = None
                    length = self.headers.getheader('content-length')
                    if length is not None:
                        intLength = int(length)
                        if intLength > 0:
                            payload = self.rfile.read(intLength)

                    # special case notifications
                    if self.path.startswith(
                            '/webapi/notification') and httpOperation is 'GET':
                        result = notificationSys.getListResult(session)
                    else:
                        if payload is not None and len(payload) > 0:
                            try:
                                payload = json.loads(payload)
                            except ValueError:
                                payload = None
                        context = {"storage": storage, "session": session}
                        result = doSchemaObjectOperation(
                            context, self.path, httpOperation, payload)
        except BaseException as e:
            print("EXCEPTION DURING REQUEST HANDLING: " + str(e))
            result = makeInternalServer()

        self.send_response(result['code'])
        session.writeSessionHeader(self)

        if result['obj'] is not None:
            self.send_header('Content-Type', 'text/json')
            self.end_headers()
            print('   # RESULT: ' + json.dumps(result['obj'].toJson()))
            self.wfile.write(result['obj'].toJson())
        else:
            self.end_headers()
            self.wfile.write('')
Example #4
0
    def _doHandle(self, httpOperation):
        """Respond to a GET request."""
        try:
            if self.path.startswith('/webapi/session') and httpOperation is 'GET':
                session = sessionManager.getSessionFromHttpHeaders(self.headers, storage)
                if session is None:
                    session = sessionManager.createSession(storage)
                result =  makeOKResult(session.clientSession)
            else:
                session = sessionManager.getSessionFromHttpHeaders(self.headers, storage)
                if session is None:
                    result =  makeNotAuthorized(session.clientSession)
                else:
                    payload = None
                    length = self.headers.getheader('content-length')
                    if length is not None:
                        intLength = int(length)
                        if intLength > 0:
                            payload = self.rfile.read(intLength)

                    # special case notifications
                    if self.path.startswith('/webapi/notification') and httpOperation is 'GET':
                        queryIndex = self.path.find("?")
                        queryParams = extractQueryParams(self.path[queryIndex + 1:])
                        result = notificationSys.getListResult(session, queryParams)
                    else:
                        if payload is not None and len(payload) > 0:
                            try:
                                payload = json.loads(payload)
                            except ValueError:
                                payload = None
                        context = {
                            "storage": storage,
                            "session": session
                        }
                        result = doSchemaObjectOperation(context, self.path, httpOperation, payload)
        except BaseException as e:
            print("EXCEPTION DURING REQUEST HANDLING: " + str(e))
            result = makeInternalServer()
        
        self.send_response(result['code'])
        session.writeSessionHeader(self)

        if result['obj'] is not None:
            self.send_header('Content-Type', 'text/json')
            self.end_headers()
            print('   # RESULT: ' + json.dumps(result['obj'].toJson()))
            self.wfile.write(result['obj'].toJson())
        else:
            self.end_headers()
            self.wfile.write('')
Example #5
0
def doObjectOperation(context, details, reference, operation, payload):
    """ """
    obj = context['storage'].get(details['name'], reference)
    try:
        func = getattr(obj, operation)
        func = getattr(klass, operation)
        if payload is not None:
            param = makeObject(payload)
        else:
            param = None
        result = func(context, param)
        return makeOKResult(result)
    except AttributeError:
        return makeBadUrl()
Example #6
0
def doObjectOperation(context, details, reference, operation, payload):
    """ """
    obj = context['storage'].get(details['name'], reference);
    try:
        func = getattr(obj, operation)
        func = getattr(klass, operation)
        if payload is not None:
            param = makeObject(payload)
        else:
            param = None
        result = func(context, param)
        return makeOKResult(result);
    except AttributeError:
        return makeBadUrl()
Example #7
0
def doCreate(context, details, payload):
    """ """
    obj = makeObject(payload)  # needed
    result = context['storage'].add(obj)
    return makeOKResult(result.reference)
Example #8
0
def doDelete(context, details, reference, payload):
    """ """
    context['storage'].delete(details['name'], reference)
    return makeOKResult(None)
Example #9
0
def doUpdate(context, details, reference, payload):
    """ """
    obj = context['storage'].get(details['name'], reference)
    obj.fromJson(payload)
    context['storage'].update(obj)
    return makeOKResult(None)
Example #10
0
def doRead(context, details, reference):
    """ """
    obj = context['storage'].get(details['name'], reference)
    return makeOKResult(obj)
Example #11
0
def doUpdate(context, details, reference, payload):
    """ """
    obj = context['storage'].get(details['name'], reference)
    obj.fromJson(payload)
    context['storage'].update(obj)
    return makeOKResult(None)
Example #12
0
def doRead(context, details, reference):
    """ """
    obj = context['storage'].get(details['name'], reference)
    return makeOKResult(obj)
Example #13
0
def doCreate(context, details, payload):
    """ """
    obj = makeObject(payload)           # needed
    result = context['storage'].add(obj);
    return makeOKResult(result.reference)
Example #14
0
def doDelete(context, details, reference, payload):
    """ """
    context['storage'].delete(details['name'], reference)
    return makeOKResult(None)