blob: cccce6b37a97aff0fc402bc6507fc33128894cc2 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
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,
}
})
}
|