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  }