diff options
Diffstat (limited to 'askama_shared/src/generator.rs')
-rw-r--r-- | askama_shared/src/generator.rs | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/askama_shared/src/generator.rs b/askama_shared/src/generator.rs index a7fba18..3194cd9 100644 --- a/askama_shared/src/generator.rs +++ b/askama_shared/src/generator.rs @@ -696,16 +696,20 @@ impl<'a> Generator<'a> { self.writeln("fn respond_to(self, _: &::askama::rocket::Request) \ -> ::std::result::Result<\ ::askama::rocket::Response<'r>, ::askama::rocket::Status> {"); + self.writeln("let rsp = self.render().map_err(\ + |_| ::askama::rocket::Status::InternalServerError)?;"); + + self.writeln("::askama::rocket::Response::build()"); + self.indent(); let ext = match path.extension() { Some(s) => s.to_str().unwrap(), None => "txt", }; - self.writeln("::askama::rocket::Response::build()"); - self.indent(); self.writeln(&format!(".header(::askama::rocket::ContentType::from_extension({:?})\ .unwrap())", ext)); - self.writeln(".sized_body(::std::io::Cursor::new(self.render().unwrap()))"); + self.writeln(".sized_body(::std::io::Cursor::new(rsp))"); self.writeln(".ok()"); + self.dedent(); self.writeln("}"); self.writeln("}"); |