github.com/bosssauce/ponzu@v0.11.1-0.20200102001432-9bc41b703131/system/api/json.go (about) 1 package api 2 3 import ( 4 "bytes" 5 "encoding/json" 6 "log" 7 "net/http" 8 ) 9 10 func fmtJSON(data ...json.RawMessage) ([]byte, error) { 11 var msg = []json.RawMessage{} 12 for _, d := range data { 13 msg = append(msg, d) 14 } 15 16 resp := map[string][]json.RawMessage{ 17 "data": msg, 18 } 19 20 var buf = &bytes.Buffer{} 21 enc := json.NewEncoder(buf) 22 err := enc.Encode(resp) 23 if err != nil { 24 log.Println("Failed to encode data to JSON:", err) 25 return nil, err 26 } 27 28 return buf.Bytes(), nil 29 } 30 31 func toJSON(data []string) ([]byte, error) { 32 var buf = &bytes.Buffer{} 33 enc := json.NewEncoder(buf) 34 resp := map[string][]string{ 35 "data": data, 36 } 37 38 err := enc.Encode(resp) 39 if err != nil { 40 log.Println("Failed to encode data to JSON:", err) 41 return nil, err 42 } 43 44 return buf.Bytes(), nil 45 } 46 47 // sendData should be used any time you want to communicate 48 // data back to a foreign client 49 func sendData(res http.ResponseWriter, req *http.Request, data []byte) { 50 res.Header().Set("Content-Type", "application/json") 51 res.Header().Set("Vary", "Accept-Encoding") 52 53 _, err := res.Write(data) 54 if err != nil { 55 log.Println("Error writing to response in sendData") 56 } 57 }