1
2
3
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
/*
* Hurl (https://hurl.dev)
* Copyright (C) 2026 Orange
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
use std::fmt::Display;
use crate::http::Url;
/// Represents an HTTP request for `Value::HttpResponse`
#[derive(Clone, Debug)]
pub struct HttpResponse {
/// Absolute URL of redirection
location: Option<Url>,
/// Status code of the HTTP response
status: u32,
}
impl HttpResponse {
/// Returns a new HTTP response, given an optional `location` of redirection and a `status` code.
pub fn new(location: Option<Url>, status: u32) -> Self {
HttpResponse { location, status }
}
/// Returns the (optional) redirection URL suggested by this HTTP response.
pub fn location(&self) -> Option<&Url> {
self.location.as_ref()
}
/// Returns the HTTP status code of this response.
pub fn status(&self) -> u32 {
self.status
}
}
impl Display for HttpResponse {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match &self.location {
Some(url) => write!(f, "Response(location={}, status={})", url, self.status),
None => write!(f, "Response(location=None, status={})", self.status),
}
}
}