Skip to main content

earl_protocol_http/
schema.rs

1use std::collections::BTreeMap;
2
3use rkyv::{Archive, Deserialize as RkyvDeserialize, Serialize as RkyvSerialize};
4use serde::{Deserialize, Serialize};
5use serde_json::Value;
6
7use earl_core::schema::{AuthTemplate, BodyTemplate, TransportTemplate};
8use earl_core::with::AsJson;
9
10#[derive(Debug, Clone, Deserialize, Serialize, Archive, RkyvSerialize, RkyvDeserialize)]
11#[serde(deny_unknown_fields)]
12pub struct HttpOperationTemplate {
13    pub method: String,
14    pub url: String,
15    pub path: Option<String>,
16    #[rkyv(with = AsJson)]
17    pub query: Option<BTreeMap<String, Value>>,
18    #[rkyv(with = AsJson)]
19    pub headers: Option<BTreeMap<String, Value>>,
20    #[rkyv(with = AsJson)]
21    pub cookies: Option<BTreeMap<String, Value>>,
22    pub auth: Option<AuthTemplate>,
23    pub body: Option<BodyTemplate>,
24    #[serde(default)]
25    pub stream: bool,
26    pub transport: Option<TransportTemplate>,
27}
28
29#[derive(Debug, Clone, Deserialize, Serialize, Archive, RkyvSerialize, RkyvDeserialize)]
30#[serde(deny_unknown_fields)]
31pub struct GraphqlOperationTemplate {
32    #[serde(default)]
33    pub method: String,
34    pub url: String,
35    pub path: Option<String>,
36    #[rkyv(with = AsJson)]
37    pub query: Option<BTreeMap<String, Value>>,
38    #[rkyv(with = AsJson)]
39    pub headers: Option<BTreeMap<String, Value>>,
40    #[rkyv(with = AsJson)]
41    pub cookies: Option<BTreeMap<String, Value>>,
42    pub auth: Option<AuthTemplate>,
43    pub graphql: GraphqlTemplate,
44    #[serde(default)]
45    pub stream: bool,
46    pub transport: Option<TransportTemplate>,
47}
48
49#[derive(Debug, Clone, Deserialize, Serialize, Archive, RkyvSerialize, RkyvDeserialize)]
50#[serde(deny_unknown_fields)]
51pub struct GraphqlTemplate {
52    pub query: String,
53    pub operation_name: Option<String>,
54    #[rkyv(with = AsJson)]
55    pub variables: Option<Value>,
56}