Struct http_test_server::resource::Resource[][src]

pub struct Resource { /* fields omitted */ }

Responsible for configuring a resource and interacting with it.

Must be created through TestServer.

By default a resource's method is GET and response is 200 Ok with empty body.

use http_test_server::TestServer;
use http_test_server::http::{Method, Status};

let server = TestServer::new().unwrap();
let resource = server.create_resource("/i-am-a-resource");

resource
    .status(Status::PartialContent)
    .method(Method::POST)
    .body("All good!");

Methods

impl Resource
[src]

Defines response's HTTP Status .

Refer to custom_status for Statuses not covered by Status.

resource.status(Status::PartialContent);

Defines a custom HTTP Status to response.

Use it to return HTTP statuses that are not covered by Status.

resource.custom_status(333, "Only Half Beast");

Defines response headers.

Call it multiple times to add multiple headers. If a header is defined twice only the late value is returned.

resource
    .header("Content-Type", "application/json")
    .header("Connection", "Keep-Alive");

Defines response's body.

If the response is a stream this value will be sent straight after connection.

Calling multiple times will overwrite the value.

resource.body("this is important!");

Defines HTTP method.

A resource will only respond to one method, however multiple resources with same URL and different methods can be created.

use http_test_server::http::Method;
let resource_put = server.create_resource("/i-am-a-resource");
let resource_post = server.create_resource("/i-am-a-resource");

resource_put.method(Method::PUT);
resource_post.method(Method::POST);

Defines delay to response after client connected

use std::time::Duration;

resource.delay(Duration::from_millis(500));

Set response as stream, this means clients won't be disconnected after body is sent and updates can be sent and received.

See also: send, send_line, stream_receiver.

let resource = server.create_resource("/stream");

resource.stream();

resource
    .send_line("some")
    .send_line("data")
    .close_open_connections();

Send data to all connected clients.

See also: send_line, stream.

let resource = server.create_resource("/stream");

resource.stream();

resource
    .send("some")
    .send(" data");

Send data to all connected clients. Same as send, but appends \n to data.

See also: stream

let resource = server.create_resource("/stream");

resource.stream();

resource
    .send_line("one line")
    .send_line("another line");

Close all connections with clients.

See also: stream

let resource = server.create_resource("/stream");

resource.stream();

resource.close_open_connections();

Number of clients connected to stream.

See also: stream

let resource = server.create_resource("/stream");

resource
    .stream()
    .close_open_connections();

assert_eq!(resource.open_connections_count(), 0);

Receives data sent from clients through stream.

See also: stream

let resource = server.create_resource("/stream");
let receiver = resource.stream().stream_receiver();

let new_message = receiver.recv().unwrap();

for message in receiver.iter() {
    println!("Client message: {}", message);
}

Number of requests received

assert_eq!(resource.request_count(), 0);

Trait Implementations

impl Debug for Resource
[src]

Formats the value using the given formatter. Read more

impl Clone for Resource
[src]

Returns a Resource copy that shares state with other copies.

This is useful when working with same Resource across threads.

Performs copy-assignment from source. Read more

Auto Trait Implementations

impl Send for Resource

impl Sync for Resource