use std::collections::BTreeSet;
use async_trait::async_trait;
use crate::{
enums::content::Content,
interfaces::extractor::SubdomainExtractorInterface,
types::{
core::{Result, Subdomain},
func::InnerExtractFunc,
},
};
pub struct JSONExtractor {
inner: InnerExtractFunc,
}
impl JSONExtractor {
pub fn new(inner: InnerExtractFunc) -> Self {
Self { inner }
}
}
#[async_trait]
impl SubdomainExtractorInterface for JSONExtractor {
async fn extract(&self, content: Content, domain: &str) -> Result<BTreeSet<Subdomain>> {
(self.inner)(content.as_json(), domain)
}
}