wasmer_config/app/
http.rs

1use super::pretty_duration::PrettyDuration;
2
3/// Defines an HTTP request.
4#[derive(
5    schemars::JsonSchema, serde::Serialize, serde::Deserialize, PartialEq, Eq, Clone, Debug,
6)]
7pub struct HttpRequest {
8    /// Request path.
9    pub path: String,
10
11    /// HTTP method.
12    ///
13    /// Defaults to GET.
14    #[serde(skip_serializing_if = "Option::is_none")]
15    pub method: Option<String>,
16
17    /// HTTP headers added to the request.
18    #[serde(skip_serializing_if = "Option::is_none")]
19    pub headers: Option<Vec<HttpHeader>>,
20
21    /// Request body as a string.
22    #[serde(skip_serializing_if = "Option::is_none")]
23    pub body: Option<String>,
24
25    /// Request timeout.
26    ///
27    /// Format: 1s, 5m, 11h, ...
28    #[serde(skip_serializing_if = "Option::is_none")]
29    pub timeout: Option<PrettyDuration>,
30
31    #[serde(skip_serializing_if = "Option::is_none")]
32    pub expect: Option<HttpRequestExpect>,
33}
34
35/// Definition for an HTTP header.
36#[derive(
37    schemars::JsonSchema, serde::Serialize, serde::Deserialize, PartialEq, Eq, Clone, Debug,
38)]
39pub struct HttpHeader {
40    pub name: String,
41    pub value: String,
42}
43
44/// Validation checks for an [`HttpRequest`].
45#[derive(
46    schemars::JsonSchema, serde::Serialize, serde::Deserialize, PartialEq, Eq, Clone, Debug,
47)]
48pub struct HttpRequestExpect {
49    /// Expected HTTP status codes.
50    #[serde(skip_serializing_if = "Option::is_none")]
51    pub status_codes: Option<Vec<u16>>,
52
53    /// Text that must be present in the response body.
54    #[serde(skip_serializing_if = "Option::is_none")]
55    pub body_includes: Option<String>,
56
57    /// Regular expression that must match against the response body.
58    #[serde(skip_serializing_if = "Option::is_none")]
59    pub body_regex: Option<String>,
60}