Struct ureq::Agent[][src]

pub struct Agent { /* fields omitted */ }

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().build();

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());

Methods

impl Agent
[src]

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");

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.

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", "application/json")
    .build();

let r = agent
    .get("/my-page")
    .call();

 if r.ok() {
     println!("yay got {}", r.into_json().unwrap());
 } else {
     println!("Oh no error!");
 }

Set many headers that will be present in all requests using the agent.

#[macro_use]
extern crate ureq;

fn main() {
let agent = ureq::agent()
    .set_map(map! {
        "X-API-Key" => "foobar",
        "Accept" => "application/json"
    })
    .build();

let r = agent
    .get("/my_page")
    .call();

if r.ok() {
    println!("yay got {}", r.into_json().unwrap());
}
}

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);

Auth of other kinds such as Digest, Token etc, that will be present in all requests using the agent.

let agent = ureq::agent()
    .auth_kind("token", "secret")
    .build();

let r = agent
    .get("/my_page")
    .call();

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().build();

agent.get("http://www.google.com").call();

assert!(agent.cookie("NID").is_some());

Set a cookie in this agent.

let agent = ureq::agent().build();

let cookie = ureq::Cookie::new("name", "value");
agent.set_cookie(cookie);

Make a GET request from this agent.

Make a HEAD request from this agent.

Make a POST request from this agent.

Make a PUT request from this agent.

Make a DELETE request from this agent.

Make a TRACE request from this agent.

Make a OPTIONS request from this agent.

Make a CONNECT request from this agent.

Make a PATCH request from this agent.

Trait Implementations

impl Debug for Agent
[src]

Formats the value using the given formatter. Read more

impl Default for Agent
[src]

Returns the "default value" for a type. Read more

impl Clone for Agent
[src]

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

Auto Trait Implementations

impl Send for Agent

impl Sync for Agent