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") {
|
if strings.Contains(r.Header.Get("Accept"), "text/csv") {
|
||||||
return encodeCSVResponse(w, v)
|
return encodeCSVResponse(w, v)
|
||||||
}
|
}
|
||||||
|
if strings.Contains(r.Header.Get("Accept"), "text/tsv") {
|
||||||
|
return encodeTSVResponse(w, v)
|
||||||
|
}
|
||||||
return encodeJSONResponse(w, v)
|
return encodeJSONResponse(w, v)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -256,7 +259,15 @@ func encodeJSONResponse(w http.ResponseWriter, v interface{}) error {
|
||||||
return json.NewEncoder(w).Encode(v)
|
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 {
|
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)
|
b, err := json.Marshal(v)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
|
@ -282,17 +293,18 @@ func encodeCSVResponse(w http.ResponseWriter, v interface{}) error {
|
||||||
}
|
}
|
||||||
sort.Strings(fields)
|
sort.Strings(fields)
|
||||||
|
|
||||||
w.Write([]byte(strings.Join(fields, ",")))
|
w.Write([]byte(strings.Join(fields, delim)))
|
||||||
|
w.Write([]byte("\n"))
|
||||||
|
|
||||||
for _, object := range objects {
|
for _, object := range objects {
|
||||||
w.Write([]byte("\n"))
|
|
||||||
for j, field := range fields {
|
for j, field := range fields {
|
||||||
json.Unmarshal([]byte(field), &field)
|
json.Unmarshal([]byte(field), &field)
|
||||||
if j > 0 {
|
if j > 0 {
|
||||||
w.Write([]byte(","))
|
w.Write([]byte(delim))
|
||||||
}
|
}
|
||||||
w.Write(object[field])
|
w.Write(object[field])
|
||||||
}
|
}
|
||||||
|
w.Write([]byte("\n"))
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue