awpak-web-client 0.1.0

Web client for awpak projects.
Documentation
use reqwest::Method;
use serde::{Deserialize, Serialize};
use serde_json::Value;


#[derive(Serialize, Deserialize, Clone)]
pub struct AwpakRequest
{
    pub url : String,
    pub method : AwpakMethod,
    #[serde(default)]
    pub headers : Vec<AwpakHeader>,
    #[serde(default)]
    pub query_params : Vec<AwpakQueryParam>,
    #[serde(default)]
    pub body : Option<AwpakBody>,
    #[serde(default)]
    pub timeout : Option<u64>
}

#[derive(Debug, Serialize, Deserialize, Clone)]
pub enum AwpakMethod
{
    Options,
    Get,
    Post,
    Put,
    Delete,
    Head,
    Trace,
    Connect,
    Patch
}

impl From<AwpakMethod> for Method
{
    fn from( value: AwpakMethod ) -> Self 
    {
        match value
        {
            AwpakMethod::Options => Method::OPTIONS,
            AwpakMethod::Get => Method::GET,
            AwpakMethod::Post => Method::POST,
            AwpakMethod::Put => Method::PUT,
            AwpakMethod::Delete => Method::DELETE,
            AwpakMethod::Head => Method::HEAD,
            AwpakMethod::Trace => Method::TRACE,
            AwpakMethod::Connect => Method::CONNECT,
            AwpakMethod::Patch => Method::PATCH
        }
    }
}

#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct AwpakQueryParam
{
    pub name : String,
    pub value : String
}

#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct AwpakHeader
{
    pub name : String,
    pub value : String
}

#[derive(Debug, Serialize, Deserialize, Clone)]
pub enum AwpakBody
{
    Json( Value ),
    Form( Vec<AwpakFormField> )
}

#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct AwpakFormField
{
    pub name : String,
    pub value : String
}