ogcapi_services/
openapi.rs

1use std::{fs, path::Path, str::FromStr};
2
3#[doc(hidden)]
4pub static OPENAPI: &[u8; 29696] = include_bytes!("../assets/openapi/openapi.yaml");
5
6#[derive(Default, Clone)]
7pub struct OpenAPI(pub openapiv3::OpenAPI);
8
9impl FromStr for OpenAPI {
10    type Err = anyhow::Error;
11
12    fn from_str(s: &str) -> Result<Self, Self::Err> {
13        let openapi: openapiv3::OpenAPI = serde_yaml::from_str(s)?;
14        Ok(OpenAPI(openapi))
15    }
16}
17
18impl OpenAPI {
19    pub fn from_slice(api: &[u8]) -> Self {
20        let openapi: openapiv3::OpenAPI = serde_yaml::from_slice(api).unwrap();
21        OpenAPI(openapi)
22    }
23
24    pub fn from_path(path: &Path) -> anyhow::Result<OpenAPI> {
25        let api = fs::read_to_string(path)?;
26        OpenAPI::from_str(&api)
27    }
28}