package utils import ( "encoding/json" "fmt" "github.com/golang-jwt/jwt/v5" ) type WbAuthData struct { Token string `json:"token"` } func NewWbAuthData(token string) WbAuthData { return WbAuthData{ Token: token, } } func DecodeWildberriesJwt(token []byte) (WbAuthData, jwt.MapClaims, error) { var authData WbAuthData err := json.Unmarshal(token, &authData) if err != nil { return authData, nil, fmt.Errorf("failed to unmarshal JWT: %w", err) } claims := jwt.MapClaims{} _, _, err = jwt.NewParser().ParseUnverified(authData.Token, claims) if err != nil { return authData, nil, fmt.Errorf("invalid JWT: %w", err) } return authData, claims, nil } func ToPtrs[T any](s []T) []*T { res := make([]*T, len(s)) for i := range s { res[i] = &s[i] } return res } func DerefSlice[T any](s []*T) []T { res := make([]T, len(s)) for i := range s { if s[i] != nil { res[i] = *s[i] } } return res }