44 lines
963 B
Go
44 lines
963 B
Go
package tiktok
|
|
|
|
import (
|
|
"encoding/json"
|
|
"fmt"
|
|
"time"
|
|
|
|
"ruben/inventory2/internal/domains/raw_events"
|
|
"ruben/inventory2/internal/logging"
|
|
"ruben/inventory2/internal/server/response"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
func Webhooks(
|
|
r *gin.RouterGroup,
|
|
logger *logging.Logger,
|
|
db *raw_events.Store,
|
|
) {
|
|
r.POST("/test", response.Handler(func(c *gin.Context) (response.Response, error) {
|
|
r := c.Request
|
|
|
|
var body json.RawMessage
|
|
if err := json.NewDecoder(r.Body).Decode(&body); err != nil {
|
|
return nil, fmt.Errorf("failed to decode body as json: %w", err)
|
|
}
|
|
|
|
ts := time.Now().UTC()
|
|
|
|
err := db.Save(r.Context(), &raw_events.Event{
|
|
Platform: "tiktok",
|
|
StoreID: "test-store-1",
|
|
EventID: fmt.Sprint(ts.Unix()),
|
|
EventTimestamp: ts,
|
|
Payload: body,
|
|
})
|
|
if err != nil {
|
|
return nil, fmt.Errorf("error occurred saving the body as the event payload: %w", err)
|
|
}
|
|
|
|
return response.Status(201), nil
|
|
}))
|
|
}
|