pub struct Agent { /* private fields */ }
Expand description
Agents keep state between requests.
By default, no state, such as cookies, is kept between requests. But by creating an agent as entry point for the request, we can keep a state.
let agent = ureq::agent();
let auth = agent
.post("/login")
.auth("martin", "rubbermashgum")
.call(); // blocks. puts auth cookies in agent.
if !auth.ok() {
println!("Noes!");
}
let secret = agent
.get("/my-protected-page")
.call(); // blocks and waits for request.
if !secret.ok() {
println!("Wot?!");
}
println!("Secret is: {}", secret.into_string().unwrap());
Implementations§
source§impl Agent
impl Agent
sourcepub fn new() -> Agent
pub fn new() -> Agent
Creates a new agent. Typically you’d use ureq::agent()
to
do this.
let agent = ureq::Agent::new()
.set("X-My-Header", "Foo") // present on all requests from this agent
.build();
agent.get("/foo");
sourcepub fn build(&self) -> Self
pub fn build(&self) -> Self
Create a new agent after treating it as a builder. This actually clones the internal state to a new one and instantiates a new connection pool that is reused between connects.
sourcepub fn set(&mut self, header: &str, value: &str) -> &mut Agent
pub fn set(&mut self, header: &str, value: &str) -> &mut Agent
Set a header field that will be present in all requests using the agent.
let agent = ureq::agent()
.set("X-API-Key", "foobar")
.set("Accept", "text/plain")
.build();
let r = agent
.get("/my-page")
.call();
if r.ok() {
println!("yay got {}", r.into_string().unwrap());
} else {
println!("Oh no error!");
}
sourcepub fn auth(&mut self, user: &str, pass: &str) -> &mut Agent
pub fn auth(&mut self, user: &str, pass: &str) -> &mut Agent
Basic auth that will be present in all requests using the agent.
let agent = ureq::agent()
.auth("martin", "rubbermashgum")
.build();
let r = agent
.get("/my_page")
.call();
println!("{:?}", r);
sourcepub fn auth_kind(&mut self, kind: &str, pass: &str) -> &mut Agent
pub fn auth_kind(&mut self, kind: &str, pass: &str) -> &mut Agent
Auth of other kinds such as Digest
, Token
etc, that will be present
in all requests using the agent.
// sets a header "Authorization: token secret"
let agent = ureq::agent()
.auth_kind("token", "secret")
.build();
let r = agent
.get("/my_page")
.call();
sourcepub fn request(&self, method: &str, path: &str) -> Request
pub fn request(&self, method: &str, path: &str) -> Request
Request by providing the HTTP verb such as GET
, POST
…
let agent = ureq::agent();
let r = agent
.request("GET", "/my_page")
.call();
println!("{:?}", r);
Gets a cookie in this agent by name. Cookies are available
either by setting it in the agent, or by making requests
that Set-Cookie
in the agent.
let agent = ureq::agent();
agent.get("http://www.google.com").call();
assert!(agent.cookie("NID").is_some());
Set a cookie in this agent.
let agent = ureq::agent();
let cookie = ureq::Cookie::new("name", "value");
agent.set_cookie(cookie);