Simple homelab monitoring service
0

Configure Feed

Select the types of activity you want to include in your feed.

Extract header parsing and flattening out, into Service model structure

Chris Walker (Jun 26, 2026, 9:34 PM +0100) 117df63a a8a18ab3

+30
+3
db/services.go
··· 28 28 s.Name, 29 29 s.URL, 30 30 strings.Join(headers, "|"), 31 + s.FlattenHeaders(), 31 32 s.Enabled) 32 33 } 33 34 ··· 64 65 } 65 66 if len(headers) > 0 { 66 67 svc.Headers = parseHeaders(headers) 68 + svc.ParseHeaders(headers) 67 69 } 68 70 svcList = append(svcList, svc) 69 71 } ··· 88 90 89 91 if len(headers) > 0 { 90 92 svc.Headers = parseHeaders(headers) 93 + svc.ParseHeaders(headers) 91 94 } 92 95 93 96 return &svc, nil
+27
models/models.go
··· 1 1 package models 2 2 3 3 import ( 4 + "fmt" 5 + "strings" 4 6 "time" 5 7 6 8 "github.com/gofrs/uuid/v5" ··· 16 18 URL string `json:"url"` 17 19 Headers map[string]string `json:"headers,omitempty"` 18 20 Enabled bool `json:"enabled"` 21 + } 22 + 23 + func (s *Service) ParseHeaders(headers string) { 24 + if len(headers) == 0 { 25 + return 26 + } 27 + 28 + m := make(map[string]string) 29 + for h := range strings.SplitSeq(headers, "|") { 30 + hdrElems := strings.Split(h, ",") 31 + m[hdrElems[0]] = hdrElems[1] 32 + } 33 + s.Headers = m 34 + } 35 + 36 + func (s *Service) FlattenHeaders() string { 37 + if len(s.Headers) == 0 { 38 + return "" 39 + } 40 + 41 + var headers []string 42 + for hdr, val := range s.Headers { 43 + headers = append(headers, fmt.Sprintf("%s,%s", hdr, val)) 44 + } 45 + return strings.Join(headers, "|") 19 46 } 20 47 21 48 // Status repesents a single service status being written