awpak_web_client/
request.rs

1use reqwest::Method;
2use serde::{Deserialize, Serialize};
3use serde_json::Value;
4
5
6#[derive(Serialize, Deserialize, Clone)]
7pub struct AwpakRequest
8{
9    pub url : String,
10    pub method : AwpakMethod,
11    #[serde(default)]
12    pub headers : Vec<AwpakHeader>,
13    #[serde(default)]
14    pub query_params : Vec<AwpakQueryParam>,
15    #[serde(default)]
16    pub body : Option<AwpakBody>,
17    #[serde(default)]
18    pub timeout : Option<u64>
19}
20
21#[derive(Debug, Serialize, Deserialize, Clone)]
22pub enum AwpakMethod
23{
24    Options,
25    Get,
26    Post,
27    Put,
28    Delete,
29    Head,
30    Trace,
31    Connect,
32    Patch
33}
34
35impl From<AwpakMethod> for Method
36{
37    fn from( value: AwpakMethod ) -> Self 
38    {
39        match value
40        {
41            AwpakMethod::Options => Method::OPTIONS,
42            AwpakMethod::Get => Method::GET,
43            AwpakMethod::Post => Method::POST,
44            AwpakMethod::Put => Method::PUT,
45            AwpakMethod::Delete => Method::DELETE,
46            AwpakMethod::Head => Method::HEAD,
47            AwpakMethod::Trace => Method::TRACE,
48            AwpakMethod::Connect => Method::CONNECT,
49            AwpakMethod::Patch => Method::PATCH
50        }
51    }
52}
53
54#[derive(Debug, Serialize, Deserialize, Clone)]
55pub struct AwpakQueryParam
56{
57    pub name : String,
58    pub value : String
59}
60
61#[derive(Debug, Serialize, Deserialize, Clone)]
62pub struct AwpakHeader
63{
64    pub name : String,
65    pub value : String
66}
67
68#[derive(Debug, Serialize, Deserialize, Clone)]
69pub enum AwpakBody
70{
71    Json( Value ),
72    Form( Vec<AwpakFormField> )
73}
74
75#[derive(Debug, Serialize, Deserialize, Clone)]
76pub struct AwpakFormField
77{
78    pub name : String,
79    pub value : String
80}