...
1
3 package logs
4
5 import (
6 "net/url"
7 "strings"
8
9 "github.com/pkg/errors"
10 )
11
12
13
14
15
16
17
18
19 func ParseLogDetails(details string) (map[string]string, error) {
20 pairs := strings.Split(details, ",")
21 detailsMap := make(map[string]string, len(pairs))
22 for _, pair := range pairs {
23 k, v, ok := strings.Cut(pair, "=")
24 if !ok || k == "" {
25
26 return nil, errors.New("invalid details format")
27 }
28 var err error
29 k, err = url.QueryUnescape(k)
30 if err != nil {
31 return nil, err
32 }
33 v, err = url.QueryUnescape(v)
34 if err != nil {
35 return nil, err
36 }
37 detailsMap[k] = v
38 }
39 return detailsMap, nil
40 }
41
View as plain text