mod concept_description;
mod environment;
mod serializer;
mod submodel;
mod type_mapper;
pub use concept_description::*;
pub use environment::*;
pub use serializer::*;
pub use submodel::*;
pub use type_mapper::*;
use crate::error::SammError;
use crate::metamodel::Aspect;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum AasFormat {
Xml,
Json,
Aasx,
}
pub fn generate_aas(aspect: &Aspect, format: AasFormat) -> Result<String, SammError> {
let environment = build_aas_environment(aspect)?;
match format {
AasFormat::Xml => serialize_xml(&environment),
AasFormat::Json => serialize_json(&environment),
AasFormat::Aasx => {
let aasx_binary = serialize_aasx(&environment)?;
use base64::Engine;
let encoded = base64::engine::general_purpose::STANDARD.encode(&aasx_binary);
Ok(format!("data:application/zip;base64,{}", encoded))
}
}
}