package wasi:http@0.2.3;
/// WASI HTTP Outgoing Handler - HTTP client capability
interface outgoing-handler {
use types.{headers, method, scheme, status-code};
use wasi:io/streams@0.2.3.{input-stream, output-stream};
use wasi:io/error@0.2.3.{error as io-error};
/// Outgoing HTTP request resource
resource outgoing-request {
/// Create a new outgoing request with the given headers
constructor(headers: headers);
/// Get/set the HTTP method
method: func() -> method;
set-method: func(method: method);
/// Get/set the path with query string
path-with-query: func() -> option<string>;
set-path-with-query: func(path: option<string>);
/// Get/set the scheme (HTTP/HTTPS)
scheme: func() -> option<scheme>;
set-scheme: func(scheme: option<scheme>);
/// Get/set the authority (host:port)
authority: func() -> option<string>;
set-authority: func(authority: option<string>);
/// Get the headers for this request
headers: func() -> headers;
}
/// Incoming HTTP response resource
resource incoming-response {
/// Get the status code
status: func() -> status-code;
/// Get the response headers
headers: func() -> headers;
}
/// Future incoming response - represents a pending HTTP response
resource future-incoming-response {
/// Get the response (blocking until available)
get: func() -> option<incoming-response>;
}
/// Request options for outgoing requests
resource request-options {
constructor();
}
/// Perform an HTTP request
handle: func(
request: outgoing-request,
options: option<request-options>
) -> future-incoming-response;
}