1pub mod config;
2pub mod payload;
3pub mod plugin;
4pub mod server;
5
6use anyhow::{Context, Result};
7use folk_api::{Plugin, PluginFactory, ServerPluginWrapper};
8use serde_json::Value;
9
10pub use config::HttpConfig;
11pub use plugin::HttpPlugin;
12
13struct HttpPluginFactory;
14
15impl PluginFactory for HttpPluginFactory {
16 fn create(&self, config: Value) -> Result<Box<dyn Plugin>> {
17 let config: HttpConfig =
18 serde_json::from_value(config).context("invalid [http] configuration")?;
19 Ok(Box::new(ServerPluginWrapper::new(HttpPlugin::new(config))))
20 }
21}
22
23pub fn folk_plugin_factory() -> Box<dyn PluginFactory> {
24 Box::new(HttpPluginFactory)
25}