From bd439dc982232e087c53163d9f31d52e6bb340c1 Mon Sep 17 00:00:00 2001 From: Bryan Newbold Date: Thu, 17 Jan 2019 16:35:27 -0800 Subject: have rust codegen validate optional query params Also lower-cases boolean processing. --- rust/codegen_openapi2.sh | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'rust/codegen_openapi2.sh') diff --git a/rust/codegen_openapi2.sh b/rust/codegen_openapi2.sh index f7d1df53..a3950c58 100755 --- a/rust/codegen_openapi2.sh +++ b/rust/codegen_openapi2.sh @@ -11,4 +11,16 @@ sed -i 's/extern crate uuid;/extern crate serde_json;\nextern crate uuid;/g' fat # Hack to fix "release_date" as Date, not DateTime sed -i 's/release_date: Option>/release_date: Option/g' fatcat-api-spec/src/models.rs +# Hack to require that optional params parse correctly (boolean, integer, datetime) +# If we reformat, this this should basically go from, eg: +# .and_then(|x| x.parse::() +# .ok()); +# To: +# .and_then(|x| Some(x.parse::())) +# .map_or_else(|| Ok(None), |x| x.map(|v| Some(v))) +# .map_err(|x| Response::with((status::InternalServerError, "unparsable query parameter (expected integer)".to_string())))?; +sed -i 's/.and_then(|x| x.parse::().ok());$/.and_then(|x| Some(x.parse::())).map_or_else(|| Ok(None), |x| x.map(|v| Some(v))).map_err(|x| Response::with((status::BadRequest, "unparsable query parameter (expected integer)".to_string())))?;/g' fatcat-api-spec/src/server.rs +sed -i 's/.and_then(|x| x.parse::().ok());$/.and_then(|x| Some(x.to_lowercase().parse::())).map_or_else(|| Ok(None), |x| x.map(|v| Some(v))).map_err(|x| Response::with((status::BadRequest, "unparsable query parameter (expected boolean)".to_string())))?;/g' fatcat-api-spec/src/server.rs +sed -i 's/.and_then(|x| x.parse::>().ok());$/.and_then(|x| Some(x.parse::>())).map_or_else(|| Ok(None), |x| x.map(|v| Some(v))).map_err(|x| Response::with((status::BadRequest, "unparsable query parameter (expected UTC datetime in ISO\/RFC format)".to_string())))?;/g' fatcat-api-spec/src/server.rs + cargo fmt -- cgit v1.2.3