pub struct Uri<'a> { /* private fields */ }
Expand description
Representation of Uniform Resource Identifier
§Example
use http_req::uri::Uri;
use std::convert::TryFrom;
let uri: Uri = Uri::try_from("https://user:info@foo.com:12/bar/baz?query#fragment").unwrap();;
assert_eq!(uri.host(), Some("foo.com"));
Implementations§
source§impl<'a> Uri<'a>
impl<'a> Uri<'a>
sourcepub fn scheme(&self) -> &str
pub fn scheme(&self) -> &str
Returns scheme of this Uri
.
§Example
use http_req::uri::Uri;
use std::convert::TryFrom;
let uri: Uri = Uri::try_from("https://user:info@foo.com:12/bar/baz?query#fragment").unwrap();;
assert_eq!(uri.scheme(), "https");
sourcepub fn user_info(&self) -> Option<&str>
pub fn user_info(&self) -> Option<&str>
Returns information about the user included in this Uri
.
§Example
use http_req::uri::Uri;
use std::convert::TryFrom;
let uri: Uri = Uri::try_from("https://user:info@foo.com:12/bar/baz?query#fragment").unwrap();;
assert_eq!(uri.user_info(), Some("user:info"));
sourcepub fn host(&self) -> Option<&str>
pub fn host(&self) -> Option<&str>
Returns host of this Uri
.
§Example
use http_req::uri::Uri;
use std::convert::TryFrom;
let uri: Uri = Uri::try_from("https://user:info@foo.com:12/bar/baz?query#fragment").unwrap();;
assert_eq!(uri.host(), Some("foo.com"));
Examples found in repository?
examples/request_builder_get.rs (line 9)
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
fn main() {
//Parses a URI and assigns it to a variable `addr`.
let addr: Uri = Uri::try_from("https://www.rust-lang.org/learn").unwrap();
//Connects to a remote host. Uses information from `addr`.
let stream = TcpStream::connect((addr.host().unwrap(), addr.corr_port())).unwrap();
//Opens a secure connection over TlsStream. This is required due to use of `https` protocol.
let mut stream = tls::Config::default()
.connect(addr.host().unwrap_or(""), stream)
.unwrap();
//Container for a response's body.
let mut writer = Vec::new();
//Adds a header `Connection: Close`.
let response = RequestBuilder::new(&addr)
.header("Connection", "Close")
.send(&mut stream, &mut writer)
.unwrap();
println!("Status: {} {}", response.status_code(), response.reason());
println!("Headers: {}", response.headers());
//println!("{}", String::from_utf8_lossy(&writer));
}
sourcepub fn host_header(&self) -> Option<String>
pub fn host_header(&self) -> Option<String>
Returns host of this Uri
to use in a header.
§Example
use http_req::uri::Uri;
use std::convert::TryFrom;
let uri: Uri = Uri::try_from("https://user:info@foo.com:12/bar/baz?query#fragment").unwrap();;
assert_eq!(uri.host_header(), Some("foo.com:12".to_string()));
sourcepub fn port(&self) -> Option<u16>
pub fn port(&self) -> Option<u16>
Returns port of this Uri
§Example
use http_req::uri::Uri;
use std::convert::TryFrom;
let uri: Uri = Uri::try_from("https://user:info@foo.com:12/bar/baz?query#fragment").unwrap();;
assert_eq!(uri.port(), Some(12));
sourcepub fn corr_port(&self) -> u16
pub fn corr_port(&self) -> u16
Returns port corresponding to this Uri
.
Returns default port if it hasn’t been set in the uri.
§Example
use http_req::uri::Uri;
use std::convert::TryFrom;
let uri: Uri = Uri::try_from("https://user:info@foo.com:12/bar/baz?query#fragment").unwrap();;
assert_eq!(uri.corr_port(), 12);
Examples found in repository?
examples/request_builder_get.rs (line 9)
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
fn main() {
//Parses a URI and assigns it to a variable `addr`.
let addr: Uri = Uri::try_from("https://www.rust-lang.org/learn").unwrap();
//Connects to a remote host. Uses information from `addr`.
let stream = TcpStream::connect((addr.host().unwrap(), addr.corr_port())).unwrap();
//Opens a secure connection over TlsStream. This is required due to use of `https` protocol.
let mut stream = tls::Config::default()
.connect(addr.host().unwrap_or(""), stream)
.unwrap();
//Container for a response's body.
let mut writer = Vec::new();
//Adds a header `Connection: Close`.
let response = RequestBuilder::new(&addr)
.header("Connection", "Close")
.send(&mut stream, &mut writer)
.unwrap();
println!("Status: {} {}", response.status_code(), response.reason());
println!("Headers: {}", response.headers());
//println!("{}", String::from_utf8_lossy(&writer));
}
sourcepub fn path(&self) -> Option<&str>
pub fn path(&self) -> Option<&str>
Returns path of this Uri
.
§Example
use http_req::uri::Uri;
use std::convert::TryFrom;
let uri: Uri = Uri::try_from("https://user:info@foo.com:12/bar/baz?query#fragment").unwrap();;
assert_eq!(uri.path(), Some("/bar/baz"));
sourcepub fn query(&self) -> Option<&str>
pub fn query(&self) -> Option<&str>
Returns query of this Uri
.
§Example
use http_req::uri::Uri;
use std::convert::TryFrom;
let uri: Uri = Uri::try_from("https://user:info@foo.com:12/bar/baz?query#fragment").unwrap();;
assert_eq!(uri.query(), Some("query"));
Trait Implementations§
source§impl<'a> PartialEq for Uri<'a>
impl<'a> PartialEq for Uri<'a>
impl<'a> StructuralPartialEq for Uri<'a>
Auto Trait Implementations§
impl<'a> Freeze for Uri<'a>
impl<'a> RefUnwindSafe for Uri<'a>
impl<'a> Send for Uri<'a>
impl<'a> Sync for Uri<'a>
impl<'a> Unpin for Uri<'a>
impl<'a> UnwindSafe for Uri<'a>
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more