示例#1
0
    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
示例#2
0
  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
示例#4
0
  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)