feat(handlers): Add reply_thread handler for posts
This commit is contained in:
parent
148dfc39c8
commit
cf636077e6
2 changed files with 18 additions and 2 deletions
|
@ -83,9 +83,24 @@ pub fn submit_thread(state: State<AppState>, input: Form<NewThread>) -> Converse
|
||||||
.and_then(move |res| {
|
.and_then(move |res| {
|
||||||
let thread = res?;
|
let thread = res?;
|
||||||
info!("Created new thread \"{}\" with ID {}", thread.title, thread.id);
|
info!("Created new thread \"{}\" with ID {}", thread.title, thread.id);
|
||||||
Ok(HttpResponse::TemporaryRedirect()
|
Ok(HttpResponse::SeeOther()
|
||||||
.header("Location", format!("/thread/{}", thread.id))
|
.header("Location", format!("/thread/{}", thread.id))
|
||||||
.finish())
|
.finish())
|
||||||
})
|
})
|
||||||
.responder()
|
.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()
|
||||||
|
}
|
||||||
|
|
|
@ -61,7 +61,8 @@ fn main() {
|
||||||
App::with_state(AppState { db: db_addr.clone(), tera })
|
App::with_state(AppState { db: db_addr.clone(), tera })
|
||||||
.middleware(middleware::Logger::default())
|
.middleware(middleware::Logger::default())
|
||||||
.resource("/", |r| r.method(Method::GET).with(forum_index))
|
.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))})
|
.resource("/thread/{id}", |r| r.method(Method::GET).with2(forum_thread))})
|
||||||
.bind(&bind_host).expect(&format!("Could not bind on '{}'", bind_host))
|
.bind(&bind_host).expect(&format!("Could not bind on '{}'", bind_host))
|
||||||
.start();
|
.start();
|
||||||
|
|
Loading…
Reference in a new issue