[−][src]Struct imgix::Url
Primary structure used to generate imgix URLs.
An imgix URL is comprised of four components:
- scheme - the scheme being used (https by default).
- domain - the domain, i.e. example.domain.net.
- path - the path to the image file.
- query - the query string constructed from
params
.
domain
┌──────┴──────┐
https://www.example.com/image/path.png/?w=320&h=640
└─┬─┘ └──────┬───────┘ └────┬────┘
scheme path params
This structure is meant to be a crate primitive that
crate users and contributors can use to build on. This
is part of the reason why many of the building functions
can panic. They panic to try to ensure invalid urls are
never constructed. This is to provide higher-level structures
certain guarantees about the representation of a Url
.
Methods
impl Url
[src]
pub fn new(domain: &'static str) -> Self
[src]
Construct a new Url
given a domain.
Panics
This constructor will fail if the domain
is an empty string.
pub fn domain(self, d: &str) -> Self
[src]
Set the domain value (i.e. "example.domain.net").
Panics
This method panics if passed an empty string.
pub fn path(self, p: &str) -> Self
[src]
Set the path value to the image file (i.e. 'image/path.png').
Panics
This method panics if passed an empty string.
pub fn param(self, k: &'static str, v: &'static str) -> Self
[src]
Set an arbitrary key-value parameter (i.e. k='w', v='100' or k='fit', v='crop').
Examples
use imgix::Url; let url = Url::new("example.domain.net").param("w", "320").path("test").lib(""); let right = "https://example.domain.net/test?w=320"; assert_eq!(url.join(), "https://example.domain.net/test?w=320")
Panics
This method panics if any key k
or any value v
is an empty string,
where k
and v
represent string literals.
pub fn params(self, p: &[(&'static str, &'static str)]) -> Self
[src]
Set an arbitrary number of key-value parameters.
Examples
use imgix::Url; let url = Url::new("example.domain.net") .path("test").lib("") .params(&[("w", "320"), ("h", "640"), ("fit", "crop")]); let right = "https://example.domain.net/test?w=320&h=640&fit=crop"; assert_eq!(url.join(), right);
Panics
This method panics if any key k
or any value v
is an empty string.
pub fn lib(self, l: &str) -> Self
[src]
Set the library version explicitly, see Url::ix()
for the
implicit default.
The Url
's lib
value can be set to any String
by passing
the desired string literal. If the lib
is a valid ix-lib
parameter if will be considered on the server. However, if
an invalid lib-parameter is passed, e.g. "rust-is-cool", it
will be ignored (appreciated ;) but ignored).
Examples
use imgix::{constants::lib_version, Scheme, Url}; const DOMAIN: &str = "example.domain.net"; const PATH: &str = "image.png"; let url = Url::new(DOMAIN) .lib(&lib_version()) .path("image.png"); let right = format!( "{scheme}://{domain}/{path}?{lib}", scheme = Scheme::Https, domain = DOMAIN, path = PATH, lib = lib_version() ); assert_eq!(url.join(), right); let url = url.lib("rust-is-cool"); assert_ne!(url.join(), right);
pub fn token(self, t: &str) -> Self
[src]
Set the signing token. TODO: Test token post md5 implementation.
pub fn scheme(self, s: Scheme) -> Self
[src]
pub fn ix(self) -> Self
[src]
pub fn join(&self) -> String
[src]
Join the components of a Url
(i.e. scheme
+ domain
+ path
+
params
) where the resulting string has the following form:
{scheme}://{domain}/{path}?{lib}{query}
This function will only join
the components of a Url
if a path
has been specified.
Panics
This function will panic if the image path
has not been specified.
(i.e. if the path
is None
). This is to ensure that a Url
is
joined if it is in a valid state.
pub fn join_params(p: &[(&'static str, &'static str)]) -> String
[src]
Trait Implementations
Auto Trait Implementations
impl RefUnwindSafe for Url
impl Send for Url
impl Sync for Url
impl Unpin for Url
impl UnwindSafe for Url
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,