github.com/louisevanderlith/droxolite@v1.20.2/mix/json.go (about) 1 package mix 2 3 import ( 4 "bytes" 5 "encoding/json" 6 "io" 7 ) 8 9 //JSON provides a io.Reader for serving json data 10 type js struct { 11 headers map[string]string 12 data interface{} 13 } 14 15 //JSON is called before every function execution to setup the environment a Handler will expect 16 func JSON(data interface{}) Mixer { 17 result := &js{ 18 headers: DefaultHeaders(), 19 data: data, 20 } 21 22 return result 23 } 24 25 func (r *js) Headers() map[string]string { 26 return r.headers 27 } 28 29 //Reader configures the response for reading 30 func (r *js) Reader() io.Reader { 31 j, err := json.Marshal(r.data) 32 33 if err != nil { 34 panic(err) 35 return nil 36 } 37 38 return bytes.NewReader(j) 39 }