package handlers import ( "crypto/subtle" "net/http" "git.leonardobishop.net/stash/api/dto" "git.leonardobishop.net/stash/pkg/entries" ) func RecordEntry(service entries.Service, token string) http.HandlerFunc { return dto.WrapResponseFunc(func(w http.ResponseWriter, r *http.Request) error { var request dto.CreateEntryRequest if err := dto.ReadDto(r, &request); err != nil { return err } if subtle.ConstantTimeCompare([]byte(token), []byte(request.Token)) != 1 { return &dto.ErrorResponse{ Code: http.StatusForbidden, Message: "Forbidden", } } entry, err := service.CreateEntry(request.Title, request.Kind, request.Url, request.Description) if err != nil { return err } return &dto.OkResponse{ Code: http.StatusCreated, Data: entry, } }) }