package handlers import ( "encoding/json" "golang-lab4/middlewares" "golang-lab4/utils" "io" "net/http" "github.com/uptrace/bunrouter" "go.uber.org/zap" ) type PostUrlInput struct { Url string `json:"url"` } // PostUrl // // @param request body PostUrlInput true "query params" // @accept json // @success 200 // @router /url [post] func (self *Handlers) PostUrl( w http.ResponseWriter, req bunrouter.Request, ) error { b, err := io.ReadAll(req.Body) if err != nil { return middlewares.HTTPError{ StatusCode: http.StatusBadRequest, Message: "read payload failed", OriginError: err, } } var input PostUrlInput if err := json.Unmarshal(b, &input); err != nil { return middlewares.HTTPError{ StatusCode: http.StatusBadRequest, Message: "failed to unmarshal input into json", OriginError: err, } } zap.L().Info("add url", zap.String("url", input.Url)) self.fetcher.Add(input.Url) return utils.Success(w) }