diff options
author | Melody Horn <melody@boringcactus.com> | 2022-11-25 23:52:27 -0700 |
---|---|---|
committer | Melody Horn <melody@boringcactus.com> | 2022-11-25 23:52:27 -0700 |
commit | 1e0c953395cd16cefd0546062a07b3bc5b00d1ab (patch) | |
tree | 2691735288eaa7bc46e26f83a15469c54e5a10a8 /src | |
parent | c13fd19d83d923c4bc5a5dc19c301ab6b4d0c73a (diff) | |
download | linja-pona-svginator-canon.tar.gz linja-pona-svginator-canon.zip |
Diffstat (limited to 'src')
-rw-r--r-- | src/main.rs | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/src/main.rs b/src/main.rs index 235023a..1d7e27e 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,6 +1,7 @@ #[macro_use] extern crate rocket; +use cached::proc_macro::cached; use quick_xml::events::BytesText; use quick_xml::Writer; use rocket::http::{ContentType, Status}; @@ -64,6 +65,14 @@ fn to_final_svg(text: &str) -> anyhow::Result<String> { Ok(result) } +#[cached] +fn get_result(text: String) -> Result<(ContentType, String), (Status, String)> { + match to_final_svg(&text) { + Ok(svg) => Ok((ContentType::SVG, svg)), + Err(e) => Err((Status::InternalServerError, e.to_string())), + } +} + #[get("/")] fn index() -> &'static str { "Hello, world!" @@ -71,10 +80,7 @@ fn index() -> &'static str { #[get("/render/<text>")] fn render(text: &str) -> Result<(ContentType, String), (Status, String)> { - match to_final_svg(text) { - Ok(svg) => Ok((ContentType::SVG, svg)), - Err(e) => Err((Status::InternalServerError, e.to_string())), - } + get_result(text.to_string()) } #[rocket::main] |