diff --git a/doc/api.yaml b/doc/api.yaml index 337065a..2a89878 100644 --- a/doc/api.yaml +++ b/doc/api.yaml @@ -1080,9 +1080,9 @@ components: comment: $ref: "#/components/schemas/comment" comment: - minLength: 5 + minLength: 1 maxLength: 255 - pattern: ".*" #everything except newlines ^[*]{5, 255}$ + pattern: "^(.){1,255}$" # everything except newlines type: string example: "What a lovely picture! 😊" description: The comment's text @@ -1092,7 +1092,7 @@ components: format: binary minLength: 1 maxLength: 10485760 # 10 MB - pattern: "((.|\n)*)" # todo: review. Btw this means "any string" + pattern: "((.|\n)*)" # this accepts everything generic_response: type: object diff --git a/service/api/comments.go b/service/api/comments.go index aade789..cd5dac2 100644 --- a/service/api/comments.go +++ b/service/api/comments.go @@ -3,7 +3,6 @@ package api import ( "encoding/json" "net/http" - "regexp" "strconv" "github.com/julienschmidt/httprouter" @@ -89,15 +88,7 @@ func (rt *_router) PostComment(w http.ResponseWriter, r *http.Request, ps httpro } // check if the comment is valid (should not contain newlines and at be between 5 and 255 characters) - stat, err := regexp.Match(`^(.*)*`, []byte(request_body.Comment)) - - if err != nil { - helpers.SendInternalError(err, "Error matching regex", w, rt.baseLogger) - return - } - - if !stat || len(request_body.Comment) < 5 || len(request_body.Comment) > 255 { - helpers.SendBadRequest(w, "Invalid comment", rt.baseLogger) + if !helpers.MatchCommentOrBadRequest(request_body.Comment, w, rt.baseLogger) { return } diff --git a/service/api/helpers/regex-helpers.go b/service/api/helpers/regex-helpers.go index b3684a7..8581101 100644 --- a/service/api/helpers/regex-helpers.go +++ b/service/api/helpers/regex-helpers.go @@ -31,3 +31,10 @@ func MatchUsernameOrBadRequest(username string, w http.ResponseWriter, l logrus. w, l) } + +func MatchCommentOrBadRequest(comment string, w http.ResponseWriter, l logrus.FieldLogger) bool { + return MatchRegexOrBadRequest(comment, + `^(.){1,255}$`, "Comment must be between 1 and 255 characters long", + w, + l) +}