Silk

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 TargetForm

A URI conversion request-target form.

Origin

Origin = 0

Origin-form path plus optional query.

Absolute

Absolute = 1

Absolute-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>) -> bool

Reports whether this target is absolute-form.

Method RequestTarget.isAuthority

pub fn isAuthority<'text, 'life1>(self: &'life1 RequestTarget<'text>) -> bool

Reports 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.

On this page