also accpt text/tsv
parent
e58fa50656
commit
1324376399
18
main.go
18
main.go
|
|
@ -249,6 +249,9 @@ func encodeResponse(w http.ResponseWriter, r *http.Request, v interface{}) error
|
|||
if strings.Contains(r.Header.Get("Accept"), "text/csv") {
|
||||
return encodeCSVResponse(w, v)
|
||||
}
|
||||
if strings.Contains(r.Header.Get("Accept"), "text/tsv") {
|
||||
return encodeTSVResponse(w, v)
|
||||
}
|
||||
return encodeJSONResponse(w, v)
|
||||
}
|
||||
|
||||
|
|
@ -256,7 +259,15 @@ func encodeJSONResponse(w http.ResponseWriter, v interface{}) error {
|
|||
return json.NewEncoder(w).Encode(v)
|
||||
}
|
||||
|
||||
func encodeTSVResponse(w http.ResponseWriter, v interface{}) error {
|
||||
return encodeSVResponse(w, v, "\t")
|
||||
}
|
||||
|
||||
func encodeCSVResponse(w http.ResponseWriter, v interface{}) error {
|
||||
return encodeSVResponse(w, v, ",")
|
||||
}
|
||||
|
||||
func encodeSVResponse(w http.ResponseWriter, v interface{}, delim string) error {
|
||||
b, err := json.Marshal(v)
|
||||
if err != nil {
|
||||
return err
|
||||
|
|
@ -282,17 +293,18 @@ func encodeCSVResponse(w http.ResponseWriter, v interface{}) error {
|
|||
}
|
||||
sort.Strings(fields)
|
||||
|
||||
w.Write([]byte(strings.Join(fields, ",")))
|
||||
w.Write([]byte(strings.Join(fields, delim)))
|
||||
w.Write([]byte("\n"))
|
||||
|
||||
for _, object := range objects {
|
||||
w.Write([]byte("\n"))
|
||||
for j, field := range fields {
|
||||
json.Unmarshal([]byte(field), &field)
|
||||
if j > 0 {
|
||||
w.Write([]byte(","))
|
||||
w.Write([]byte(delim))
|
||||
}
|
||||
w.Write(object[field])
|
||||
}
|
||||
w.Write([]byte("\n"))
|
||||
}
|
||||
|
||||
return nil
|
||||
|
|
|
|||
Loading…
Reference in New Issue