guac 0.3.1

A library that provides toolkit for working with [Guac](https://guac.sh) from Rust.
Documentation
use crate::client::intrinsic::vuln_metadata::{VulnerabilityMetadataInputSpec, VulnerabilityScoreType};
use crate::client::intrinsic::vulnerability::VulnerabilityInputSpec;
use chrono::Utc;
use graphql_client::GraphQLQuery;

type Time = chrono::DateTime<Utc>;

#[derive(GraphQLQuery)]
#[graphql(
    schema_path = "src/client/intrinsic/schema.json",
    query_path = "src/client/intrinsic/vuln_metadata/vuln_metadata.gql",
    response_derives = "Debug, Serialize, Deserialize"
)]
pub struct IngestVulnerabilityMetadata;

impl From<&VulnerabilityInputSpec> for ingest_vulnerability_metadata::VulnerabilityInputSpec {
    fn from(value: &VulnerabilityInputSpec) -> Self {
        Self {
            type_: value.r#type.clone(),
            vulnerability_id: value.vulnerability_id.clone(),
        }
    }
}

impl From<&VulnerabilityMetadataInputSpec> for ingest_vulnerability_metadata::VulnerabilityMetadataInputSpec {
    fn from(value: &VulnerabilityMetadataInputSpec) -> Self {
        Self {
            score_type: (&value.score_type).into(),
            score_value: value.score_value,
            timestamp: value.timestamp,
            origin: value.origin.clone(),
            collector: value.collector.clone(),
        }
    }
}

impl From<&VulnerabilityScoreType> for ingest_vulnerability_metadata::VulnerabilityScoreType {
    fn from(value: &VulnerabilityScoreType) -> Self {
        match value {
            VulnerabilityScoreType::CVSSv2 => Self::CVSSv2,
            VulnerabilityScoreType::CVSSv3 => Self::CVSSv3,
            VulnerabilityScoreType::CVSSv31 => Self::CVSSv31,
            VulnerabilityScoreType::CVSSv4 => Self::CVSSv4,
            VulnerabilityScoreType::EPSSv1 => Self::CVSSv4,
            VulnerabilityScoreType::EPSSv2 => Self::EPSSv2,
            VulnerabilityScoreType::OWASP => Self::OWASP,
            VulnerabilityScoreType::SSVC => Self::SSVC,
            VulnerabilityScoreType::Other(inner) => Self::Other(inner.clone()),
        }
    }
}