2023-02-09 19:54:21 +00:00
|
|
|
use io;
|
|
|
|
use net::uri;
|
|
|
|
|
|
|
|
// Stores state related to an HTTP request.
|
|
|
|
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,
|
|
|
|
|
|
|
|
// I/O reader for the request body.
|
|
|
|
body: (io::handle | void),
|
|
|
|
};
|
2023-02-09 22:23:05 +00:00
|
|
|
|
|
|
|
// Frees state associated with an HTTP [[request]].
|
|
|
|
export fn request_finish(req: *request) void = {
|
2023-02-10 09:13:30 +00:00
|
|
|
header_free(&req.header);
|
2023-02-09 22:23:05 +00:00
|
|
|
uri::finish(req.target);
|
|
|
|
free(req.target);
|
|
|
|
};
|