45 lines
967 B
Go
45 lines
967 B
Go
package handler
|
|
|
|
import (
|
|
"net/http"
|
|
"status/model"
|
|
"status/web/handler/form"
|
|
)
|
|
|
|
func (h *Handler) saveStatus(w http.ResponseWriter, r *http.Request) {
|
|
user, err := h.getUser(r)
|
|
if err != nil {
|
|
unauthorized(w)
|
|
return
|
|
}
|
|
f := form.NewStatusForm(r)
|
|
status := model.Status{
|
|
User: user,
|
|
Content: f.Content,
|
|
}
|
|
if err := status.Validate(); err != nil {
|
|
f.Error = err.Error()
|
|
h.renderLayout(w, "create_status", map[string]interface{}{
|
|
"form": f,
|
|
}, "")
|
|
return
|
|
}
|
|
if err := h.storage.CreateStatus(status); err != nil {
|
|
serverError(w, err)
|
|
return
|
|
}
|
|
if r.URL.Query().Get("silent") != "1" {
|
|
session, err := h.sess.Store.Get(r, "ichi")
|
|
if err != nil {
|
|
http.Error(w, err.Error(), http.StatusInternalServerError)
|
|
return
|
|
}
|
|
session.AddFlash("Status updated!")
|
|
err = session.Save(r, w)
|
|
if err != nil {
|
|
http.Error(w, err.Error(), http.StatusInternalServerError)
|
|
return
|
|
}
|
|
http.Redirect(w, r, "/", http.StatusFound)
|
|
}
|
|
}
|