12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- package render
- import (
- "encoding/json"
- "net/http"
- "github.com/pkg/errors"
- )
- var jsonContentType = []string{"application/json; charset=utf-8"}
- // JSON common json struct.
- type JSON struct {
- Code int `json:"code"`
- Message string `json:"message"`
- TTL int `json:"ttl"`
- Data interface{} `json:"data,omitempty"`
- }
- func writeJSON(w http.ResponseWriter, obj interface{}) (err error) {
- var jsonBytes []byte
- writeContentType(w, jsonContentType)
- if jsonBytes, err = json.Marshal(obj); err != nil {
- err = errors.WithStack(err)
- return
- }
- if _, err = w.Write(jsonBytes); err != nil {
- err = errors.WithStack(err)
- }
- return
- }
- // Render (JSON) writes data with json ContentType.
- func (r JSON) Render(w http.ResponseWriter) error {
- // FIXME(zhoujiahui): the TTL field will be configurable in the future
- if r.TTL <= 0 {
- r.TTL = 1
- }
- return writeJSON(w, r)
- }
- // WriteContentType write json ContentType.
- func (r JSON) WriteContentType(w http.ResponseWriter) {
- writeContentType(w, jsonContentType)
- }
- // MapJSON common map json struct.
- type MapJSON map[string]interface{}
- // Render (MapJSON) writes data with json ContentType.
- func (m MapJSON) Render(w http.ResponseWriter) error {
- return writeJSON(w, m)
- }
- // WriteContentType write json ContentType.
- func (m MapJSON) WriteContentType(w http.ResponseWriter) {
- writeContentType(w, jsonContentType)
- }
|