earl_protocol_http/
schema.rs1use 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}