diff options
author | Carpenter, Adam (CORP) <adam.carpenter@adp.com> | 2021-11-26 14:32:11 -0500 |
---|---|---|
committer | Carpenter, Adam (CORP) <adam.carpenter@adp.com> | 2021-11-26 14:32:11 -0500 |
commit | 75ef35829dc57d5b6f04a0c59160fe7584324793 (patch) | |
tree | b3a8dc76c907df228634daa604631717ea64ce29 /angelsharkd | |
parent | 03af9488f7d7fea69c779b1d9263f34841dfad37 (diff) | |
download | altruistic-angelshark-75ef35829dc57d5b6f04a0c59160fe7584324793.tar.xz altruistic-angelshark-75ef35829dc57d5b6f04a0c59160fe7584324793.zip |
feat: basic extension loader module and two scaffolded, unimplemented extensions
Diffstat (limited to 'angelsharkd')
-rw-r--r-- | angelsharkd/src/routes/extensions/mod.rs | 26 | ||||
-rw-r--r-- | angelsharkd/src/routes/extensions/simple_deprov.rs | 5 | ||||
-rw-r--r-- | angelsharkd/src/routes/extensions/simple_search.rs | 14 |
3 files changed, 45 insertions, 0 deletions
diff --git a/angelsharkd/src/routes/extensions/mod.rs b/angelsharkd/src/routes/extensions/mod.rs new file mode 100644 index 0000000..5dac1cf --- /dev/null +++ b/angelsharkd/src/routes/extensions/mod.rs @@ -0,0 +1,26 @@ +use crate::config::Config; +use warp::{path, Filter, Rejection, Reply}; + +#[cfg(feature = "simple_deprov")] +mod simple_deprov; +#[cfg(feature = "simple_search")] +mod simple_search; + +pub fn filter(config: &Config) -> impl Filter<Extract = impl Reply, Error = Rejection> + Clone { + // Note: this next line deals with the common edge case of having no + // extensions loaded with feature flags. It ensures that the the type + // checking is right when the return `.and()` is called below. + let filters = default().or(default()); + + #[cfg(feature = "simple_search")] + let filters = filters.or(simple_search::filter()); + + #[cfg(feature = "simple_deprov")] + let filters = filters.or(simple_deprov::filter()); + + path("extensions").and(filters) +} + +fn default() -> impl Filter<Extract = impl Reply, Error = Rejection> + Clone { + warp::path::end().map(|| "Angelshark extension route index. Enable extensions with feature switches and access them at `/extensions/<feature>`.") +} diff --git a/angelsharkd/src/routes/extensions/simple_deprov.rs b/angelsharkd/src/routes/extensions/simple_deprov.rs new file mode 100644 index 0000000..2b5ad40 --- /dev/null +++ b/angelsharkd/src/routes/extensions/simple_deprov.rs @@ -0,0 +1,5 @@ +use warp::{Filter, Rejection, Reply}; + +pub fn filter() -> impl Filter<Extract = impl Reply, Error = Rejection> + Clone { + warp::path("deprov").map(|| -> &str { todo!() }) // TODO: +} diff --git a/angelsharkd/src/routes/extensions/simple_search.rs b/angelsharkd/src/routes/extensions/simple_search.rs new file mode 100644 index 0000000..454dba3 --- /dev/null +++ b/angelsharkd/src/routes/extensions/simple_search.rs @@ -0,0 +1,14 @@ +use crate::config::Config; +use std::convert::Infallible; +use warp::{path, post, Filter, Rejection, Reply}; + +const CMD_LIST_EXT: &str = "list extension-type"; +const CMD_LIST_STAT: &str = "list station"; + +pub fn filter() -> impl Filter<Extract = impl Reply, Error = Rejection> + Clone { + path("search").and(post()).and_then(handle_simple_search) +} + +async fn handle_simple_search() -> Result<impl Reply, Infallible> { + Ok("Search!") +} |