feat: custom stickers apis
This commit is contained in:
@@ -4,6 +4,7 @@ import (
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"net/http"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/go-chi/chi/v5"
|
||||
@@ -140,6 +141,48 @@ func (h *SadhnaHandler) GiftableRewards(w http.ResponseWriter, r *http.Request)
|
||||
response.JSON(w, http.StatusOK, list)
|
||||
}
|
||||
|
||||
type customGiftReq struct {
|
||||
Name string `json:"name"`
|
||||
Meaning string `json:"meaning"`
|
||||
ImageURL string `json:"image_url"`
|
||||
}
|
||||
|
||||
// CreateCustomGift — POST /admin/reward-gifts/catalog
|
||||
//
|
||||
// Adds a sticker to the catalog. It reaches nobody until it is sent.
|
||||
func (h *SadhnaHandler) CreateCustomGift(w http.ResponseWriter, r *http.Request) {
|
||||
var req customGiftReq
|
||||
if err := json.NewDecoder(r.Body).Decode(&req); err != nil {
|
||||
response.Error(w, http.StatusBadRequest, "invalid JSON body")
|
||||
return
|
||||
}
|
||||
reward, err := h.svc.CreateCustomGift(r.Context(), req.Name, req.Meaning, req.ImageURL)
|
||||
if err != nil {
|
||||
response.Error(w, http.StatusBadRequest, err.Error())
|
||||
return
|
||||
}
|
||||
response.JSON(w, http.StatusCreated, reward)
|
||||
}
|
||||
|
||||
// PresignGiftImage — POST /admin/reward-gifts/image-presign
|
||||
func (h *SadhnaHandler) PresignGiftImage(w http.ResponseWriter, r *http.Request) {
|
||||
var req struct {
|
||||
ContentType string `json:"content_type"`
|
||||
}
|
||||
if err := json.NewDecoder(r.Body).Decode(&req); err != nil {
|
||||
response.Error(w, http.StatusBadRequest, "invalid JSON body")
|
||||
return
|
||||
}
|
||||
upload, public, err := h.svc.PresignGiftImage(r.Context(), strings.TrimSpace(req.ContentType))
|
||||
if err != nil {
|
||||
response.Error(w, http.StatusBadRequest, err.Error())
|
||||
return
|
||||
}
|
||||
response.JSON(w, http.StatusOK, map[string]string{
|
||||
"upload_url": upload, "image_url": public,
|
||||
})
|
||||
}
|
||||
|
||||
type giftReq struct {
|
||||
RewardKey string `json:"reward_key"`
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user