Skip to main content

http_request/response/
struct.rs

1use super::*;
2
3/// Parsed HTTP response.
4///
5/// Value type with all fields public — no `Arc<RwLock>` wrapping, no
6/// associated-type / boxed-trait indirection. Use the field accessors
7/// directly (`response.status_code`, `response.body`, ...) or the
8/// convenience helpers (`response.text()`, `response.is_success()`).
9///
10/// `HttpResponse` is `Clone` and `Debug`. Decoding is a method
11/// ([`HttpResponse::decode`]) that returns a fresh `HttpResponse` with
12/// the body expanded — original is untouched.
13#[derive(Clone, Debug, Getter, Setter)]
14pub struct HttpResponse {
15    /// HTTP version (`HTTP/1.1`, `HTTP/2`, ...).
16    pub version: HttpVersion,
17    /// 3-digit numeric status code (`200`, `404`, ...).
18    #[get(type(copy))]
19    pub status_code: ResponseStatusCode,
20    /// Reason phrase (`"OK"`, `"Not Found"`, ...).
21    #[set(type(AsRef<str>))]
22    pub reason_phrase: String,
23    /// Response headers (single-value, lowercase keys).
24    pub headers: HttpResponseHeaders,
25    /// Raw response body bytes.
26    #[set(type(AsRef<[u8]>))]
27    pub body: ResponseBody,
28}