示例#1
0
文件: views.py 项目: fiftysol/website
def view(request, version, path):
	result = classes.JSONRequest(request).load()

	if isinstance(result, HttpResponse):
		return result
	if version not in versions.index:
		return classes.ErrorJSONResponse("The given API version was not found.", status=404)
	if versions.index[version][1] not in ["default", "stable"]:
		return classes.ErrorJSONResponse("The given API version can not be used by yourself.", status=403)

	result = versions.index[version][0](result, path)

	if isinstance(result, HttpResponse):
		return result
	if isinstance(result, tuple):
		return classes.JSONResponse(*result)
	return classes.JSONResponse(result)
示例#2
0
    def view(self, request, path):
        for route, view in self.routes.items():
            match = re.search(route, path)

            if match is not None:
                try:
                    response = view(request, path, **match.groupdict())

                except classes.DeepReturn as returned:
                    response = returned.as_return()

                except:
                    traceback.print_exc()
                    return classes.ErrorJSONResponse("Internal server error.",
                                                     status=500)

                if response is None:
                    return classes.JSONResponse()
                return response
        return classes.ErrorJSONResponse("Route not found.", status=404)
示例#3
0
文件: utils.py 项目: fiftysol/website
def send_and_recv(socket, data, deep=True, json=True):
	if socket is None:
		resp = "Socket instance was not initialized."
		if json:
			resp = classes.ErrorJSONResponse(resp, status=503)
		if deep:
			raise classes.DeepReturn(resp)
		return resp

	sent = socket.send(data, block_recv=True)
	if not sent:
		socket.allow_send = True
		resp = "Failed to connect to the gateway."
		if json:
			resp = classes.ErrorJSONResponse(resp, status=503)
		if deep:
			raise classes.DeepReturn(resp)
		return resp

	recv = socket.recv()
	if recv[0] and recv[1]["success"]:
		return recv[1]

	elif recv[0]:
		resp = "Gateway Error: " + recv[1]["error"]
		if json:
			resp = classes.ErrorJSONResponse(resp, status=503)
		if deep:
			raise classes.DeepReturn(resp)
		return resp

	else:
		resp = "Failed to receive data from the gateway."
		if json:
			resp = classes.ErrorJSONResponse(resp, status=503)
		if deep:
			raise classes.DeepReturn(resp)
		return resp
示例#4
0
 def malformed(self, *args, **kwargs):
     return classes.ErrorJSONResponse("Malformed request.", status=400)