Skip to main content

HttpUrlBuilder

Struct HttpUrlBuilder 

Source
pub struct HttpUrlBuilder { /* private fields */ }
Expand description

Builder for constructing HTTP/HTTPS URLs programmatically.

HttpUrlBuilder is the focus of this crate. It accumulates URL components as decoded Rust strings and, on build / build_url, hands them to the url crate, which performs all percent-encoding, normalization and validation according to the WHATWG URL Standard.

§Example

use http_url::{HttpUrl, Scheme};

let url = HttpUrl::builder()
    .scheme(Scheme::Https)
    .host("example.com")
    .add_path_segment("api")
    .add_path_segment("v1")
    .add_query_parameter("key", "value")
    .fragment("section")
    .build()
    .unwrap();

assert_eq!(url.to_string(), "https://example.com/api/v1?key=value#section");

Implementations§

Source§

impl HttpUrlBuilder

Source

pub fn new() -> Self

Create a new empty builder.

Source

pub fn from_url(url: Url) -> Result<Self>

Create a builder pre-populated from an existing url::Url.

The URL must have an http or https scheme. The returned builder is ready to be modified and rebuilt via build or build_url.

§Example
use http_url::HttpUrlBuilder;

let u = url::Url::parse("https://example.com/a/b?q=1").unwrap();
let url = HttpUrlBuilder::from_url(u)
    .unwrap()
    .add_path_segment("c")
    .build()
    .unwrap();
assert_eq!(url.as_url().path(), "/a/b/c");
Source

pub fn parse(url: &str) -> Result<Self>

Create a builder pre-populated by parsing a URL string.

Equivalent to HttpUrlBuilder::from_url applied to the result of url::Url::parse.

Source

pub fn scheme(self, scheme: Scheme) -> Self

Set the scheme.

Source

pub fn username(self, username: &str) -> Self

Set the username for basic auth.

Source

pub fn password(self, password: &str) -> Self

Set the password for basic auth.

Source

pub fn host(self, host: &str) -> Self

Set the host (domain name or IP address literal, including bracketed IPv6 such as [::1]).

Source

pub fn port(self, port: u16) -> Self

Set the port. Use remove_port to revert to the scheme’s default.

Source

pub fn remove_port(self) -> Self

Revert to the scheme’s default port.

Source

pub fn add_path_segment(self, segment: &str) -> Self

Add a single path segment (decoded form; it is percent-encoded on build).

Source

pub fn add_path_segments(self, segments: &[&str]) -> Self

Add multiple path segments at once (decoded form).

Source

pub fn set_path(self, path: &str) -> Self

Replace the entire path with the segments of path (decoded form).

path is split on /; a leading / is ignored and empty segments are dropped. Each segment is stored as-is (decoded) and re-encoded on build. No percent-decoding is applied to the input — pass a decoded path.

Source

pub fn add_query_parameter(self, name: &str, value: &str) -> Self

Add a query parameter (name and value in decoded form). Both are percent-encoded on build using application/x-www-form-urlencoded semantics (space becomes +).

Source

pub fn remove_query_parameter(self, name: &str) -> Self

Remove all query parameters with the given name.

Source

pub fn clear_query_parameters(self) -> Self

Clear all query parameters.

Source

pub fn fragment(self, fragment: &str) -> Self

Set the fragment (decoded form).

Source

pub fn remove_fragment(self) -> Self

Remove the fragment.

Source

pub fn build_url(self) -> Result<Url>

Consume the builder and produce a url::Url.

The scheme is always http or https (it is a typed Scheme field), so the result is always a valid HTTP(S) URL. Returns an error only if required components (scheme, host) are missing or the url crate rejects the assembled URL (e.g. an invalid host).

Use build instead if you want an HttpUrl wrapper.

Source

pub fn build(self) -> Result<HttpUrl>

Consume the builder and produce an HttpUrl — a newtype over url::Url enforcing the http/https invariant.

Equivalent to HttpUrl::from_url applied to build_url.

Trait Implementations§

Source§

impl Clone for HttpUrlBuilder

Source§

fn clone(&self) -> HttpUrlBuilder

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for HttpUrlBuilder

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for HttpUrlBuilder

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl FromStr for HttpUrlBuilder

Source§

type Err = HttpUrlError

The associated error which can be returned from parsing.
Source§

fn from_str(s: &str) -> Result<Self>

Parses a string s to return a value of this type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.