diff options
author | Gabriel A. Giovanini <mail@gabrielgio.me> | 2022-05-08 21:47:45 +0200 |
---|---|---|
committer | Gabriel A. Giovanini <mail@gabrielgio.me> | 2022-05-08 21:47:45 +0200 |
commit | ea058a851098bf81cb645249e02d26a8c253db90 (patch) | |
tree | c245a133119b1a4bf6168a16c89b22b6e04d319e /src/router.rs | |
parent | 189166e2f44ca69537fa632032ec7ab252595d1b (diff) | |
download | macroblog.rs-ea058a851098bf81cb645249e02d26a8c253db90.tar.gz macroblog.rs-ea058a851098bf81cb645249e02d26a8c253db90.tar.bz2 macroblog.rs-ea058a851098bf81cb645249e02d26a8c253db90.zip |
ref: Add embded rust and router
- Use embed rust to load and resolve file from `content/post` folder, so
the whole process is a bit more dynamic.
- Add router to to resolve the path. It is the first step to try to get
the code a bit cleaner.
Diffstat (limited to 'src/router.rs')
-rw-r--r-- | src/router.rs | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/src/router.rs b/src/router.rs new file mode 100644 index 0000000..0bba091 --- /dev/null +++ b/src/router.rs @@ -0,0 +1,27 @@ +use regex::{Regex}; + +const ACTION_REGEX: &str = r"/{0,1}(?P<action>\w*)/(?P<id>.+)"; + +pub enum Router { + NotFound, + Index, + Post { page: String }, +} + +impl Router { + pub fn new(path: &str) -> Router { + let re = Regex::new(ACTION_REGEX).unwrap(); + let caps = re.captures(path); + let action = match caps { + Some(ref value) => &value["action"], + None => "index" + }; + + match action { + "posts" => Router::Post { page: caps.unwrap()["id"].to_string() }, + "index" => Router::Index, + _ => Router::NotFound + } + } +} + |