use crate::cache::{TemplateLoader, TemplateSource};
use crate::error::{Result, TemplateError};
pub struct URLTemplateLoader;
impl URLTemplateLoader {
pub fn new() -> Self {
URLTemplateLoader
}
}
impl Default for URLTemplateLoader {
fn default() -> Self {
Self::new()
}
}
impl TemplateLoader for URLTemplateLoader {
fn find(&self, _name: &str) -> Result<Option<Box<dyn TemplateSource>>> {
Err(TemplateError::misc(
"URL-based template loading is not yet supported. \
Use FileLoader or StringLoader instead.",
))
}
fn read(&self, _src: &dyn TemplateSource) -> Result<String> {
Err(TemplateError::misc(
"URL-based template loading is not yet supported.",
))
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn find_returns_error() {
let loader = URLTemplateLoader::new();
match loader.find("http://example.com/t.ftl") {
Ok(_) => panic!("expected error, got Ok"),
Err(err) => {
let msg = err.to_user_message();
assert!(
msg.contains("URL-based template loading is not yet supported"),
"{msg}"
);
}
}
}
}