vertigo 0.11.3

Reactive Real-DOM library with SSR for Rust
Documentation
use std::collections::BTreeMap;

use vertigo_macro::AutoJsJson;

use crate::{FetchMethod, JsJson};

#[derive(AutoJsJson, Debug, Hash, Clone, PartialEq, Eq, PartialOrd, Ord)]
pub enum SsrFetchRequestBody {
    None,
    Data { data: JsJson },
}

#[derive(AutoJsJson, Debug, Hash, Clone, PartialEq, Eq, PartialOrd, Ord)]
pub struct SsrFetchRequest {
    pub method: FetchMethod,
    pub url: String,
    pub headers: BTreeMap<String, String>,
    pub body: SsrFetchRequestBody,
}

#[derive(AutoJsJson, Debug, Hash, Clone)]
pub enum SsrFetchResponse {
    Ok {
        status: u32,
        response: SsrFetchResponseContent,
    },
    Err {
        message: String,
    },
}

#[derive(AutoJsJson, Debug, Hash, Clone)]
pub enum SsrFetchResponseContent {
    Json(JsJson),
    Text(String),
}

#[derive(AutoJsJson, Debug, Hash, Clone, Default)]
pub struct SsrFetchCache {
    pub data: BTreeMap<SsrFetchRequest, SsrFetchResponse>,
}

impl SsrFetchCache {
    pub fn new(data: &BTreeMap<SsrFetchRequest, SsrFetchResponse>) -> SsrFetchCache {
        SsrFetchCache { data: data.clone() }
    }

    pub fn empty() -> SsrFetchCache {
        SsrFetchCache {
            data: BTreeMap::new(),
        }
    }

    pub fn get(&self, request: &SsrFetchRequest) -> Option<&SsrFetchResponse> {
        self.data.get(request)
    }
}