use io; use net::uri; // Stores state related to an HTTP request. // // For a request to be processable by an HTTP [[client]], i.e. via [[do]], the // method and target must be filled in appropriately. The target must include at // least a host, port, and scheme. The default values for other fields are // suitable if appropriate for the request you wish to perform. export type request = struct { // HTTP request method, e.g. GET method: str, // Request target URI. // // Note that the normal constraints for [[uri::parse]] are not upheld in // the case of a request using the origin-form (e.g. /index.html), i.e. // the scheme field may be empty. target: *uri::uri, // List of HTTP request headers. header: header, // Transport configuration, or null to use the [[client]] default. transport: nullable *transport, // I/O reader for the request body, or void if there is no body. body: (io::handle | void), }; // Frees state associated with an HTTP [[request]]. export fn request_finish(req: *request) void = { header_free(&req.header); uri::finish(req.target); free(req.target); };