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  }