sig
  exception HttpError of int
  module Request :
    sig
      type t
      type role = Responder | Authorizer | Filter
      type gateway = CGI of int * int | FCGI of int
      val gateway : CamlGI.Cgi.Request.t -> CamlGI.Cgi.Request.gateway
      val role : CamlGI.Cgi.Request.t -> CamlGI.Cgi.Request.role
      val path_info : CamlGI.Cgi.Request.t -> string
      val protocol : CamlGI.Cgi.Request.t -> string
      val remote_addr : CamlGI.Cgi.Request.t -> string
      val server_name : CamlGI.Cgi.Request.t -> string
      val server_port : CamlGI.Cgi.Request.t -> int
      val server_software : CamlGI.Cgi.Request.t -> string
      val accept : CamlGI.Cgi.Request.t -> string
      val accept_charset : CamlGI.Cgi.Request.t -> string
      val accept_encoding : CamlGI.Cgi.Request.t -> string
      val auth : CamlGI.Cgi.Request.t -> string
      val user : CamlGI.Cgi.Request.t -> string
      val user_agent : CamlGI.Cgi.Request.t -> string
      val metavar : CamlGI.Cgi.Request.t -> string -> string
      val print_string : CamlGI.Cgi.Request.t -> string -> unit
      val prerr_string : CamlGI.Cgi.Request.t -> string -> unit
    end
  val register_script :
    ?max_conns:int ->
    ?max_reqs:int ->
    ?sockaddr:Unix.sockaddr -> (CamlGI.Cgi.Request.t -> unit) -> unit
  val random_sessionid : unit -> string
  class type template = object method output : (string -> unit) -> unit end
  exception Abort
  type upload_data = {
    upload_value : string;
    upload_filename : string;
    upload_content_type : string;
  }
  class cgi :
    ?post_max:int ->
    CamlGI.Cgi.Request.t ->
    object
      method cookie : string -> Cookie.cookie
      method cookies : Cookie.cookie list
      method exit : unit -> 'a
      method header :
        ?content_type:string ->
        ?cookie:Cookie.cookie ->
        ?cookies:Cookie.cookie list -> ?cookie_cache:bool -> unit -> unit
      method is_multipart : bool
      method log : string -> unit
      method param : string -> string
      method param_all : string -> string list
      method param_exists : string -> bool
      method param_true : string -> bool
      method params : (string * string) list
      method redirect :
        ?cookie:Cookie.cookie ->
        ?cookies:Cookie.cookie list -> ?cookie_cache:bool -> string -> 'b
      method request : CamlGI.Cgi.Request.t
      method template :
        ?content_type:string ->
        ?cookie:Cookie.cookie ->
        ?cookies:Cookie.cookie list ->
        ?cookie_cache:bool -> #CamlGI.Cgi.template -> unit
      method upload : string -> CamlGI.Cgi.upload_data
      method upload_all : string -> CamlGI.Cgi.upload_data list
      method url : unit -> string
    end
  module Cgi_args :
    sig
      val parse : string -> (string * string) list
      val make : (string * string) list -> string
    end
  val cHTTP_CONTINUE : int
  val cHTTP_SWITCHING_PROTOCOLS : int
  val cHTTP_PROCESSING : int
  val cHTTP_OK : int
  val cHTTP_CREATED : int
  val cHTTP_ACCEPTED : int
  val cHTTP_NON_AUTHORITATIVE : int
  val cHTTP_NO_CONTENT : int
  val cHTTP_RESET_CONTENT : int
  val cHTTP_PARTIAL_CONTENT : int
  val cHTTP_MULTI_STATUS : int
  val cHTTP_MULTIPLE_CHOICES : int
  val cHTTP_MOVED_PERMANENTLY : int
  val cHTTP_MOVED_TEMPORARILY : int
  val cHTTP_SEE_OTHER : int
  val cHTTP_NOT_MODIFIED : int
  val cHTTP_USE_PROXY : int
  val cHTTP_TEMPORARY_REDIRECT : int
  val cHTTP_BAD_REQUEST : int
  val cHTTP_UNAUTHORIZED : int
  val cHTTP_PAYMENT_REQUIRED : int
  val cHTTP_FORBIDDEN : int
  val cHTTP_NOT_FOUND : int
  val cHTTP_METHOD_NOT_ALLOWED : int
  val cHTTP_NOT_ACCEPTABLE : int
  val cHTTP_PROXY_AUTHENTICATION_REQUIRED : int
  val cHTTP_REQUEST_TIME_OUT : int
  val cHTTP_CONFLICT : int
  val cHTTP_GONE : int
  val cHTTP_LENGTH_REQUIRED : int
  val cHTTP_PRECONDITION_FAILED : int
  val cHTTP_REQUEST_ENTITY_TOO_LARGE : int
  val cHTTP_REQUEST_URI_TOO_LARGE : int
  val cHTTP_UNSUPPORTED_MEDIA_TYPE : int
  val cHTTP_RANGE_NOT_SATISFIABLE : int
  val cHTTP_EXPECTATION_FAILED : int
  val cHTTP_UNPROCESSABLE_ENTITY : int
  val cHTTP_LOCKED : int
  val cHTTP_FAILED_DEPENDENCY : int
  val cHTTP_INTERNAL_SERVER_ERROR : int
  val cHTTP_NOT_IMPLEMENTED : int
  val cHTTP_BAD_GATEWAY : int
  val cHTTP_SERVICE_UNAVAILABLE : int
  val cHTTP_GATEWAY_TIME_OUT : int
  val cHTTP_VERSION_NOT_SUPPORTED : int
  val cHTTP_VARIANT_ALSO_VARIES : int
  val cHTTP_INSUFFICIENT_STORAGE : int
  val cHTTP_NOT_EXTENDED : int
  val cDOCUMENT_FOLLOWS : int
  val cPARTIAL_CONTENT : int
  val cMULTIPLE_CHOICES : int
  val cMOVED : int
  val cREDIRECT : int
  val cUSE_LOCAL_COPY : int
  val cBAD_REQUEST : int
  val cAUTH_REQUIRED : int
  val cFORBIDDEN : int
  val cNOT_FOUND : int
  val cMETHOD_NOT_ALLOWED : int
  val cNOT_ACCEPTABLE : int
  val cLENGTH_REQUIRED : int
  val cPRECONDITION_FAILED : int
  val cSERVER_ERROR : int
  val cNOT_IMPLEMENTED : int
  val cBAD_GATEWAY : int
  val cVARIANT_ALSO_VARIES : int
end