silk/http_target
Profiles: aarch64-apple-darwin, aarch64-unknown-linux-gnu, aarch64-unknown-linux-gnu-no-libc, wasm32-unknown-unknown, x86_64-unknown-linux-gnu, x86_64-unknown-linux-gnu-no-libc.
HTTP request-target forms, authority validation, URI conversion, and Host selection.
When to use
Use RequestTarget.parse for received or already serialized targets and RequestTarget.fromUri
for outgoing origin- or absolute-form bytes. Use validateRequestHost before server routing.
Details
Parsing preserves accepted spelling and percent escapes. URI conversion deliberately omits a fragment, while raw target parsing rejects one. No operation resolves DNS or connects.
Import as RequestTarget with import silk.http_target { RequestTarget }.
Public declarations: 6.
TargetForm
pub enum TargetFormA URI conversion request-target form.
Origin
Origin = 0Origin-form path plus optional query.
Absolute
Absolute = 1Absolute-form URI without a fragment.
HttpAuthority
pub struct HttpAuthority<'text>A validated HTTP authority retaining lexical host and optional port spelling.
Associated function HttpAuthority.parse
pub fn parse<'text>(text: string<'text>) -> silk/result.Result<silk/http_target.HttpAuthority<'text>, silk/http.ValueError>Validates an authority without userinfo, preserving bracketed IP literals.
Method HttpAuthority.format
pub fn format<'text, 'life1>(self: &'life1 HttpAuthority<'text>) -> string<'text>Borrows the complete authority serialization.
Method HttpAuthority.host
pub fn host<'text, 'life1>(self: &'life1 HttpAuthority<'text>) -> string<'text>Borrows the host, retaining brackets around an IP literal.
Method HttpAuthority.portText
pub fn portText<'text, 'life1>(self: &'life1 HttpAuthority<'text>) -> silk/option.Option<string<'text>>Borrows optional port digits without the colon.
Method HttpAuthority.port
pub fn port<'text, 'life1>(self: &'life1 HttpAuthority<'text>) -> silk/option.Option<u16>Returns the checked optional numeric port.
Implementation Copy for silk/http_target.HttpAuthority<'text>
impl Copy for silk/http_target.HttpAuthority<'text>RequestTarget
pub union RequestTarget<'text>One of the four HTTP request-target forms.
Origin
RequestTarget<'text>.Origin { text: string<'text> }: RequestTarget<'text>Origin-form absolute path plus optional query.
Absolute
RequestTarget<'text>.Absolute { uri: silk/uri.Uri<'text> }: RequestTarget<'text>Absolute-form generic URI.
Authority
RequestTarget<'text>.Authority { authority: silk/http_target.HttpAuthority<'text> }: RequestTarget<'text>CONNECT authority-form destination.
Asterisk
RequestTarget<'text>.Asterisk: RequestTarget<'text>Server-wide OPTIONS asterisk-form.
Associated function RequestTarget.parse
pub fn parse<'text, 'life1, 'life2>(method: &'life1 silk/http.Method<'life2>, text: string<'text>, maxBytes: usize) -> silk/result.Result<silk/http_target.RequestTarget<'text>, silk/http.ValueError>Parses one exact target form using method-specific admission rules.
Associated function RequestTarget.validateForMethod
pub fn validateForMethod<'text, 'life1, 'life2>(method: &'life1 silk/http.Method<'life2>, target: silk/http_target.RequestTarget<'text>) -> silk/result.Result<(), silk/http.ValueError>Rejects a validated target form that does not match method.
Method RequestTarget.format
pub fn format<'text>(self: RequestTarget<'text>) -> string<'text>Borrows the accepted lexical request target.
Method RequestTarget.isAbsolute
pub fn isAbsolute<'text, 'life1>(self: &'life1 RequestTarget<'text>) -> boolReports whether this target is absolute-form.
Method RequestTarget.isAuthority
pub fn isAuthority<'text, 'life1>(self: &'life1 RequestTarget<'text>) -> boolReports whether this target is authority-form.
Associated function RequestTarget.fromUri
pub fn fromUri<'life1, 'life2, 'life3>(uri: &'life1 silk/uri.Uri<'life2>, form: TargetForm, output: &'life3 mut [u8]) -> silk/result.Result<usize, silk/http.ValueError>Serializes origin- or absolute-form from a generic URI, deliberately omitting its fragment.
Implementation Copy for silk/http_target.RequestTarget<'text>
impl Copy for silk/http_target.RequestTarget<'text>validateRequestHost
pub fn validateRequestHost<'value, 'life1, 'life2, 'life3>(version: Version, target: &'life1 silk/http_target.RequestTarget<'life2>, headers: &'life3 silk/http_headers.Headers<'value>) -> silk/result.Result<silk/option.Option<silk/http_target.HttpAuthority<'value>>, silk/http.ValueError>Validates Host cardinality and syntax, returning the optional parsed Host authority.
effectiveAuthority
pub fn effectiveAuthority<'value>(target: silk/http_target.RequestTarget<'value>, host: silk/option.Option<silk/http_target.HttpAuthority<'value>>) -> silk/result.Result<silk/option.Option<silk/http_target.HttpAuthority<'value>>, silk/http.ValueError>Selects target authority for absolute/CONNECT and Host for origin/asterisk.
hostForUri
pub fn hostForUri<'value, 'life1, 'life2>(uri: &'life1 silk/uri.Uri<'value>, output: &'life2 mut [u8]) -> silk/result.Result<usize, silk/http.ValueError>Serializes outgoing Host from a URI authority after rejecting userinfo.