From 6e04f0b10f1f3488838aedf03bbd7eb02cc249c2 Mon Sep 17 00:00:00 2001 From: dhsifss <138006868+dhsifss@users.noreply.github.com> Date: Wed, 24 Apr 2024 18:31:52 +0800 Subject: [PATCH] fix: add behavior source (#843) --- backend/internal/handler/safeline.go | 19 ++++++++++++++++--- backend/internal/service/safeline.go | 7 +++---- 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/backend/internal/handler/safeline.go b/backend/internal/handler/safeline.go index 23021b3..ff766c7 100644 --- a/backend/internal/handler/safeline.go +++ b/backend/internal/handler/safeline.go @@ -1,6 +1,7 @@ package handler import ( + "encoding/json" "net/http" "github.com/gin-gonic/gin" @@ -64,7 +65,8 @@ func (h *SafelineHandler) Exist(c *gin.Context) { } type BehaviorReq struct { - Type service.BehaviorType `json:"type"` + Source string `json:"source"` + Type service.BehaviorType `json:"type"` } // Behavior record user behavior @@ -78,12 +80,23 @@ type BehaviorReq struct { // @Router /behavior [post] func (h *SafelineHandler) Behavior(c *gin.Context) { req := &BehaviorReq{} - if err := c.ShouldBindJSON(req); err != nil { + if err := c.BindJSON(req); err != nil { c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) return } - err := h.safelineService.PostBehavior(c, req.Type) + if req.Type >= service.BehaviorTypeMax || req.Type <= service.BehaviorTypeMin { + c.JSON(http.StatusBadRequest, gin.H{"error": "invalid behavior type"}) + return + } + + byteReq, err := json.Marshal(req) + if err != nil { + c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) + return + } + + err = h.safelineService.PostBehavior(c, byteReq) if err != nil { c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) return diff --git a/backend/internal/service/safeline.go b/backend/internal/service/safeline.go index f32b3eb..0571f99 100644 --- a/backend/internal/service/safeline.go +++ b/backend/internal/service/safeline.go @@ -1,6 +1,7 @@ package service import ( + "bytes" "context" "crypto/tls" "encoding/json" @@ -111,10 +112,8 @@ const ( BehaviorTypeMax ) -func (s *SafelineService) PostBehavior(ctx context.Context, behaviorType BehaviorType) error { - req, err := http.NewRequestWithContext(ctx, http.MethodPost, s.APIHost+"/api/v1/public/safeline/behavior", - strings.NewReader(fmt.Sprintf(`{"type": %d}`, behaviorType)), - ) +func (s *SafelineService) PostBehavior(ctx context.Context, body []byte) error { + req, err := http.NewRequestWithContext(ctx, http.MethodPost, s.APIHost+"/api/v1/public/safeline/behavior", bytes.NewReader(body)) if err != nil { return err }