feat(handlers): Add reply_thread handler for posts

This commit is contained in:
Vincent Ambo 2018-04-08 20:20:05 +02:00
parent 148dfc39c8
commit cf636077e6
2 changed files with 18 additions and 2 deletions

View file

@ -83,9 +83,24 @@ pub fn submit_thread(state: State<AppState>, input: Form<NewThread>) -> Converse
.and_then(move |res| {
let thread = res?;
info!("Created new thread \"{}\" with ID {}", thread.title, thread.id);
Ok(HttpResponse::TemporaryRedirect()
Ok(HttpResponse::SeeOther()
.header("Location", format!("/thread/{}", thread.id))
.finish())
})
.responder()
}
/// This handler receives a "Reply"-form and redirects the user to the
/// new post after creation.
pub fn reply_thread(state: State<AppState>, input: Form<NewPost>) -> ConverseResponse {
state.db.send(CreatePost(input.0))
.from_err()
.and_then(move |res| {
let post = res?;
info!("Posted reply {} to thread {}", post.id, post.thread_id);
Ok(HttpResponse::SeeOther()
.header("Location", format!("/thread/{}#post{}", post.thread_id, post.id))
.finish())
})
.responder()
}

View file

@ -61,7 +61,8 @@ fn main() {
App::with_state(AppState { db: db_addr.clone(), tera })
.middleware(middleware::Logger::default())
.resource("/", |r| r.method(Method::GET).with(forum_index))
.resource("/thread", |r| r.method(Method::POST).with2(submit_thread))
.resource("/thread/submit", |r| r.method(Method::POST).with2(submit_thread))
.resource("/thread/reply", |r| r.method(Method::POST).with2(reply_thread))
.resource("/thread/{id}", |r| r.method(Method::GET).with2(forum_thread))})
.bind(&bind_host).expect(&format!("Could not bind on '{}'", bind_host))
.start();