28 lines
502 B
Go
28 lines
502 B
Go
package v1
|
|
|
|
import (
|
|
"encoding/json"
|
|
"fmt"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
func bindChatwootPayload(c *gin.Context, wrapperKey string, target interface{}) error {
|
|
raw, err := c.GetRawData()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
if len(raw) == 0 {
|
|
return fmt.Errorf("request body required")
|
|
}
|
|
|
|
var envelope map[string]json.RawMessage
|
|
if err := json.Unmarshal(raw, &envelope); err == nil {
|
|
if wrapped, ok := envelope[wrapperKey]; ok {
|
|
raw = wrapped
|
|
}
|
|
}
|
|
|
|
return json.Unmarshal(raw, target)
|
|
}
|