def __call__(self, environ, start_response): status = "200 OK" # TODO: put headers into response response_headers = [("Content-type", "text/html")] form = cgi.FieldStorage(fp=environ["wsgi.input"], environ=environ) request = http_io.Request() for key in form.keys(): request.SetParameter(key, form.getvalue(key, "")) origin_request_host = utils.GetSchemeHostPort(environ) request.SetParameter(constants.ORIGIN_REQUEST_HOST, origin_request_host) logger.debug("Origin request host: %s", origin_request_host) response = http_io.Response() if request.parameters: self._publish_servlet.DoGet(request, response) else: logger.error("Internal Error - Request has no parameters") http_io.ResponseWriter.AddBodyElement( response, constants.HDR_STATUS_MESSAGE, "Internal Error - Request has no parameters") http_io.AddBodyElement(response, constants.HDR_STATUS_CODE, constants.STATUS_FAILURE) start_response(status, response_headers) return response.body
def __call__(self, environ, start_response): """Executes an application. Parses HTTP requests into internal request object and delegates processing to SnippetsEditorHandler. Args: environ: WSGI environment. start_response: callable that starts response. Returns: response body. """ request_method = "GET" if "REQUEST_METHOD" in environ: request_method = environ["REQUEST_METHOD"] # Get parameters from HTTP request. request = http_io.Request() if request_method == "GET": form = cgi.FieldStorage(fp=environ["wsgi.input"], environ=environ) for key in form.keys(): request.SetParameter(key, form.getvalue(key, "")) else: try: request_body_size = int(environ.get("CONTENT_LENGTH", 0)) except ValueError: request_body_size = 0 post_input = environ["wsgi.input"].read(request_body_size) logger.debug("POST request body: %s", post_input) self.__ParsePostInput(post_input, request) response = http_io.Response() if request.parameters: self._handler.DoRequest(request, response) else: logger.error("Internal Error - Request has no parameters.") http_io.ResponseWriter.AddJsonFailureBody( response, "Internal Error - Request has no parameters") try: start_response(SnippetsApp.STATUS_OK, SnippetsApp.RESPONSE_HEADERS) return response.body except Exception: exc_info = sys.exc_info() start_response(SnippetsApp.STATUS_ERROR, SnippetsApp.RESPONSE_HEADERS, exc_info) return exceptions.FormatException(exc_info)
def _CreatePublishRequest(self, origin_request_host, target_details): """Creates publish request. Args: origin_request_host: Origin request host (GEE server URL). target_details: dictionary of target information: dbname, fusion_host, vhname, snippets, search defs, etc. Returns: request: The publish request. """ request = http_io.Request() request.SetParameter("DbName", target_details["dbname"]) request.SetParameter("TargetPath", target_details["targetpath"]) request.SetParameter("VirtualHostName", target_details["vhname"]) request.SetParameter("Host", target_details["fusion_host"]) request.SetParameter("ServeWms", target_details["servewms"]) # Check if publish context exists. For targets published using fusion server # 5.1.2 and earlier, there is no publish context. publish_context = target_details.get("publishcontext") if publish_context: value = publish_context.get("searchdefs") if value: if isinstance(value, list): value = ",".join(value) request.SetParameter("SearchDefName", value) value = publish_context.get("supsearchdefs") if value: if isinstance(value, list): value = ",".join(value) request.SetParameter("SupSearchDefName", value) value = publish_context.get("snippetsetname") if value: request.SetParameter("SnippetSetName", value) value = publish_context.get("poifederated", False) if value: request.SetParameter("PoiFederated", value) request.SetParameter(constants.ORIGIN_REQUEST_HOST, origin_request_host) request.SetParameter(constants.CMD, "PublishDb") return request
def _CreateUnpublishRequest(self, origin_request_host, target_path): """Creates unpublish request. Args: origin_request_host: Origin request host (GEE server URL). target_path: Target path. Returns: request: The unpublish request. """ request = http_io.Request() request.SetParameter(constants.ORIGIN_REQUEST_HOST, origin_request_host) request.SetParameter(constants.CMD, constants.CMD_UNPUBLISH_DB) request.SetParameter(constants.TARGET_PATH, target_path) return request
def __call__(self, environ, start_response): """Executes an application. Parses HTTP requests into internal request object and delegates processing to StreamPushServlet. Args: environ: WSGI environment. start_response: callable that starts response. Returns: response body. """ form = cgi.FieldStorage(fp=environ["wsgi.input"], environ=environ) # Get parameters from HTTP request. request = http_io.Request() for key in form.keys(): request.SetParameter(key, form.getvalue(key, "")) response = http_io.Response() if request.parameters: self._stream_pusher.DoGet(request, response) else: logger.error("Internal Error - Request has no parameters.") http_io.ResponseWriter.AddBodyElement( response, constants.HDR_STATUS_MESSAGE, "Internal Error - Request has no parameters") http_io.AddBodyElement(response, constants.HDR_STATUS_CODE, constants.STATUS_FAILURE) try: start_response(StreamPushApp.STATUS_OK, StreamPushApp.RESPONSE_HEADERS) return response.body except Exception: exc_info = sys.exc_info() start_response(StreamPushApp.STATUS_ERROR, StreamPushApp.RESPONSE_HEADERS, exc_info) return self._FormatException(exc_info)