pub mod enrichment;
use std::time::Duration;
pub const DEFAULT_REFGET_SERVER: &str = "https://www.ebi.ac.uk/ena/cram";
const DEFAULT_TIMEOUT_SECS: u64 = 5;
const DEFAULT_MAX_CONCURRENT: usize = 5;
#[derive(Debug, Clone)]
#[non_exhaustive]
pub struct RefgetConfig {
pub server_url: String,
pub timeout: Duration,
pub max_concurrent: usize,
}
impl RefgetConfig {
#[must_use]
pub fn new(server_url: &str) -> Self {
Self {
server_url: server_url.to_string(),
timeout: Duration::from_secs(DEFAULT_TIMEOUT_SECS),
max_concurrent: DEFAULT_MAX_CONCURRENT,
}
}
}
impl Default for RefgetConfig {
fn default() -> Self {
Self::new(DEFAULT_REFGET_SERVER)
}
}
#[derive(Debug, Clone, serde::Serialize)]
#[serde(tag = "status", rename_all = "snake_case")]
#[non_exhaustive]
pub enum RefgetLookupResult {
Found {
aliases: Vec<RefgetAlias>,
sha512t24u: String,
circular: bool,
},
NotFound,
Error {
message: String,
},
}
#[derive(Debug, Clone, serde::Serialize)]
#[non_exhaustive]
pub struct RefgetAlias {
pub naming_authority: String,
pub value: String,
}
#[derive(Debug, Clone, serde::Serialize)]
#[non_exhaustive]
pub struct EnrichedContig {
pub name: String,
pub md5: Option<String>,
pub refget_metadata: RefgetLookupResult,
}