main
pub mod page;
pub mod registry;
use url::Url;
use crate::UnfurlError;
use crate::resolver::{BoxFuture, ResolveContext, Resolver};
use crate::types::MessageEmbed;
pub use registry::RegistryResolver;
pub fn build_chain() -> Vec<Box<dyn Resolver>> {
vec![Box::new(RegistryResolver), Box::new(DefaultResolver)]
}
pub struct DefaultResolver;
impl Resolver for DefaultResolver {
fn matches(&self, _url: &Url) -> bool {
true
}
fn resolve<'a>(
&'a self,
context: &'a ResolveContext<'_>,
) -> BoxFuture<'a, Result<Vec<MessageEmbed>, UnfurlError>> {
Box::pin(async move {
let embed = page::resolve_page(context).await?;
Ok(embed.into_iter().collect())
})
}
}