github.com/cloud-foundations/dominator@v0.0.0-20221004181915-6e4fee580046/dom/herd/listSubs.go (about) 1 package herd 2 3 import ( 4 "bufio" 5 "fmt" 6 "net/http" 7 8 "github.com/Cloud-Foundations/Dominator/lib/json" 9 "github.com/Cloud-Foundations/Dominator/lib/url" 10 ) 11 12 func (herd *Herd) listReachableSubsHandler(w http.ResponseWriter, 13 req *http.Request) { 14 writer := bufio.NewWriter(w) 15 defer writer.Flush() 16 parsedQuery := url.ParseQuery(req.URL) 17 selector, err := herd.getReachableSelector(parsedQuery) 18 if err != nil { 19 fmt.Fprintln(writer, err) 20 return 21 } 22 subs := herd.getSelectedSubs(selector) 23 switch parsedQuery.OutputType() { 24 case url.OutputTypeText: 25 case url.OutputTypeHtml: 26 for _, sub := range subs { 27 fmt.Fprintln(writer, sub.mdb.Hostname) 28 } 29 case url.OutputTypeJson: 30 subNames := make([]string, 0, len(subs)) 31 for _, sub := range subs { 32 subNames = append(subNames, sub.mdb.Hostname) 33 } 34 json.WriteWithIndent(writer, " ", subNames) 35 fmt.Fprintln(writer) 36 } 37 } 38 39 func (herd *Herd) listSubsHandler(w http.ResponseWriter, req *http.Request) { 40 writer := bufio.NewWriter(w) 41 defer writer.Flush() 42 herd.RLock() 43 subNames := make([]string, 0, len(herd.subsByIndex)) 44 for _, sub := range herd.subsByIndex { 45 subNames = append(subNames, sub.mdb.Hostname) 46 } 47 herd.RUnlock() 48 parsedQuery := url.ParseQuery(req.URL) 49 switch parsedQuery.OutputType() { 50 case url.OutputTypeText: 51 case url.OutputTypeHtml: 52 for _, name := range subNames { 53 fmt.Fprintln(writer, name) 54 } 55 case url.OutputTypeJson: 56 json.WriteWithIndent(writer, " ", subNames) 57 fmt.Fprintln(writer) 58 } 59 }