From 2f69cd6c6918100cac78b79992833c06a79e9fb2 Mon Sep 17 00:00:00 2001 From: Florian Sylvain Date: Fri, 21 Oct 2022 12:15:29 +0200 Subject: [PATCH] Small error handling refactor --- internal/answers.go | 12 ++++++------ internal/articles.go | 25 ++++++++++++------------- internal/auth.go | 18 +++++++++--------- 3 files changed, 27 insertions(+), 28 deletions(-) diff --git a/internal/answers.go b/internal/answers.go index e9f2fda..c57e592 100644 --- a/internal/answers.go +++ b/internal/answers.go @@ -6,14 +6,14 @@ import ( "github.com/gin-gonic/gin" ) -type answer struct { - Message string `json:"message"` +func SendBadRequest(c *gin.Context, message string) { + c.JSON(http.StatusBadRequest, gin.H{"message": message}) } -func SendErrorMessageToClient(c *gin.Context, message string) { - c.JSON(http.StatusBadRequest, answer{Message: message}) +func SendOk(c *gin.Context, message string) { + c.JSON(http.StatusOK, gin.H{"message": message}) } -func SendOkMessageToClient(c *gin.Context, message string) { - c.JSON(http.StatusOK, answer{Message: message}) +func SendForbidden(c *gin.Context, message string) { + c.JSON(http.StatusForbidden, gin.H{"message": message}) } diff --git a/internal/articles.go b/internal/articles.go index 132b507..fd0f957 100644 --- a/internal/articles.go +++ b/internal/articles.go @@ -25,7 +25,7 @@ func GetAllArticles(c *gin.Context) { var articles []Article documents, err := getDocuments(ARTICLES_LOCATION, bson.D{}) if err != nil { - SendErrorMessageToClient(c, err.Error()) + SendBadRequest(c, err.Error()) return } @@ -43,11 +43,11 @@ func GetArticle(c *gin.Context) { articles, err := getDocuments(ARTICLES_LOCATION, bson.D{{Key: "id_name", Value: articleID}}) if err != nil { - SendErrorMessageToClient(c, err.Error()) + SendBadRequest(c, err.Error()) return } if len(articles) == 0 { - SendErrorMessageToClient(c, "The ID provided doesn't match any article.") + SendBadRequest(c, "The ID provided doesn't match any article.") return } var parsedArticle Article @@ -71,50 +71,49 @@ func AddArticle(c *gin.Context) { var article Article article.Id_name = c.Params.ByName("id") if c.BindJSON(&article) != nil { - SendErrorMessageToClient(c, "Could not correctly parse the article.") + SendBadRequest(c, "Could not correctly parse the article.") return } document, err := bson.Marshal(article) if err != nil { - SendErrorMessageToClient(c, "Could not correctly marshal the article.") + SendBadRequest(c, "Could not correctly marshal the article.") return } if IsArticleIdAlreadyUsed(article.Id_name) { - SendErrorMessageToClient(c, "Article ID already used.") + SendBadRequest(c, "Article ID already used.") return } err = pushDocument(ARTICLES_LOCATION, document) if err != nil { - SendErrorMessageToClient(c, "Could not insert document into DB.") + SendBadRequest(c, "Could not insert document into DB.") return } - SendOkMessageToClient(c, "Article successfully added!") + SendOk(c, "Article successfully added!") } func DeleteArticle(c *gin.Context) { var delArticle DelArticle delArticle.Id_name = c.Params.ByName("id") if c.BindJSON(&delArticle) != nil { - SendErrorMessageToClient(c, "Could not correctly parse the article ID.") + SendBadRequest(c, "Could not correctly parse the article ID.") return } document, err := bson.Marshal(delArticle) if err != nil { - SendErrorMessageToClient(c, "Could not correctly marshal the article ID.") + SendBadRequest(c, "Could not correctly marshal the article ID.") return } deleteCount, err := deleteDocument(ARTICLES_LOCATION, document) if err != nil { - SendErrorMessageToClient(c, "Could not insert document into DB.") + SendBadRequest(c, "Could not insert document into DB.") return } - SendOkMessageToClient(c, - fmt.Sprintf("%d articles were successfully deleted!", deleteCount)) + SendOk(c, fmt.Sprintf("%d articles were successfully deleted!", deleteCount)) } diff --git a/internal/auth.go b/internal/auth.go index 5601a3f..b004b72 100644 --- a/internal/auth.go +++ b/internal/auth.go @@ -54,40 +54,40 @@ func parseUserFromContext(c *gin.Context) (User, error) { func LoginUser(c *gin.Context) { user, err := parseUserFromContext(c) if err != nil { - SendErrorMessageToClient(c, err.Error()) + SendBadRequest(c, err.Error()) return } if isUserLoggedIn(user) { - SendErrorMessageToClient(c, "User is already logged in!") + SendBadRequest(c, "User is already logged in!") return } if !isUserReal(user) { - SendErrorMessageToClient(c, "Unknown email or wrong password.") + SendBadRequest(c, "Unknown email or wrong password.") return } addSession(user) - SendOkMessageToClient(c, "User successfully logged in.") + SendOk(c, "User successfully logged in.") } func LogoutUser(c *gin.Context) { user, err := parseUserFromContext(c) if err != nil { - SendErrorMessageToClient(c, err.Error()) + SendBadRequest(c, err.Error()) return } if !isUserLoggedIn(user) { - SendErrorMessageToClient(c, "User is not logged in!") + SendBadRequest(c, "User is not logged in!") return } removeSession(user) - SendOkMessageToClient(c, "User successfully logged out.") + SendOk(c, "User successfully logged out.") } func AuthCheck(c *gin.Context) { var user User username, password, isOk := c.Request.BasicAuth() if !isOk { - SendErrorMessageToClient(c, "Incorrect or missing user credentials.") + SendBadRequest(c, "Incorrect or missing user credentials.") c.Abort() return } @@ -97,7 +97,7 @@ func AuthCheck(c *gin.Context) { user.Password = getUserHashedPassword(user) if !isUserLoggedIn(user) { - SendErrorMessageToClient(c, "Authentification failed, credentials could be wrong, user may not be logged in, session may have expired.") + SendForbidden(c, "Authentification failed, credentials could be wrong, user may not be logged in, session may have expired.") c.Abort() return }