diff options
Diffstat (limited to 'api/guestbook/guestbook.go')
| -rw-r--r-- | api/guestbook/guestbook.go | 66 |
1 files changed, 35 insertions, 31 deletions
diff --git a/api/guestbook/guestbook.go b/api/guestbook/guestbook.go index 60a7b4b..c0c7892 100644 --- a/api/guestbook/guestbook.go +++ b/api/guestbook/guestbook.go @@ -10,37 +10,13 @@ import ( "git.hatecomputers.club/hatecomputers/hatecomputers.club/utils" ) -func validateGuestbookEntry(entry *database.GuestbookEntry) []string { - errors := []string{} - - if entry.Name == "" { - errors = append(errors, "name is required") - } - - if entry.Message == "" { - errors = append(errors, "message is required") - } - - messageLength := len(entry.Message) - if messageLength > 500 { - errors = append(errors, "message cannot be longer than 500 characters") - } - - newLines := strings.Count(entry.Message, "\n") - if newLines > 10 { - errors = append(errors, "message cannot contain more than 10 new lines") - } - - return errors -} - func SignGuestbookContinuation(context *types.RequestContext, req *http.Request, resp http.ResponseWriter) types.ContinuationChain { return func(success types.Continuation, failure types.Continuation) types.ContinuationChain { name := req.FormValue("name") message := req.FormValue("message") - formErrors := types.FormError{ - Errors: []string{}, + formErrors := types.BannerMessages{ + Messages: []string{}, } entry := &database.GuestbookEntry{ @@ -48,24 +24,28 @@ func SignGuestbookContinuation(context *types.RequestContext, req *http.Request, Name: name, Message: message, } - formErrors.Errors = append(formErrors.Errors, validateGuestbookEntry(entry)...) + formErrors.Messages = append(formErrors.Messages, validateGuestbookEntry(entry)...) - if len(formErrors.Errors) == 0 { + if len(formErrors.Messages) == 0 { _, err := database.SaveGuestbookEntry(context.DBConn, entry) if err != nil { log.Println(err) - formErrors.Errors = append(formErrors.Errors, "failed to save entry") + formErrors.Messages = append(formErrors.Messages, "failed to save entry") } } - if len(formErrors.Errors) > 0 { - (*context.TemplateData)["FormError"] = formErrors + if len(formErrors.Messages) > 0 { + (*context.TemplateData)["Error"] = formErrors (*context.TemplateData)["EntryForm"] = entry resp.WriteHeader(http.StatusBadRequest) return failure(context, req, resp) } + formSuccess := types.BannerMessages{ + Messages: []string{"entry added."}, + } + (*context.TemplateData)["Success"] = formSuccess return success(context, req, resp) } } @@ -83,3 +63,27 @@ func ListGuestbookContinuation(context *types.RequestContext, req *http.Request, return success(context, req, resp) } } + +func validateGuestbookEntry(entry *database.GuestbookEntry) []string { + errors := []string{} + + if entry.Name == "" { + errors = append(errors, "name is required") + } + + if entry.Message == "" { + errors = append(errors, "message is required") + } + + messageLength := len(entry.Message) + if messageLength > 500 { + errors = append(errors, "message cannot be longer than 500 characters") + } + + newLines := strings.Count(entry.Message, "\n") + if newLines > 10 { + errors = append(errors, "message cannot contain more than 10 new lines") + } + + return errors +} |
