// Generated by Lisette bindgen
// Source: net/http/cgi (Go stdlib)
// Go: 1.25.10
// Lisette: 0.2.1

import "go:io"
import "go:log"
import "go:net/http"

/// Request returns the HTTP request as represented in the current
/// environment. This assumes the current program is being run
/// by a web server in a CGI environment.
/// The returned Request's Body is populated, if applicable.
pub fn Request() -> Result<Ref<http.Request>, error>

/// RequestFromMap creates an [http.Request] from CGI variables.
/// The returned Request's Body field is not populated.
pub fn RequestFromMap(params: Map<string, string>) -> Result<Ref<http.Request>, error>

/// Serve executes the provided [Handler] on the currently active CGI
/// request, if any. If there's no current CGI environment
/// an error is returned. The provided handler may be nil to use
/// [http.DefaultServeMux].
pub fn Serve(handler: http.Handler) -> Result<(), error>

/// Handler runs an executable in a subprocess with a CGI environment.
pub struct Handler {
  pub Path: string,
  pub Root: string,
  pub Dir: string,
  pub Env: Slice<string>,
  pub InheritEnv: Slice<string>,
  pub Logger: Option<Ref<log.Logger>>,
  pub Args: Slice<string>,
  pub Stderr: Option<io.Writer>,
  pub PathLocationHandler: Option<http.Handler>,
}

impl Handler {
  fn ServeHTTP(
    self: Ref<Handler>,
    rw: http.ResponseWriter,
    req: Ref<http.Request>,
  )
}
