github.com/go-chef/chef@v0.30.1/reader.go (about)

     1  package chef
     2  
     3  import (
     4  	"bytes"
     5  	"encoding/json"
     6  	"fmt"
     7  	"io"
     8  )
     9  
    10  // JSONReader handles arbitrary types and synthesizes a streaming encoder for them.
    11  func JSONReader(v interface{}) (r io.Reader, err error) {
    12  	if debug_on() {
    13  		jsonout, err := json.Marshal(v)
    14  		fmt.Printf("\n\nJSON IN: %+v \n JSON ERR: %+v\n", string(jsonout), err)
    15  	}
    16  	buf := new(bytes.Buffer)
    17  	err = json.NewEncoder(buf).Encode(v)
    18  	r = bytes.NewReader(buf.Bytes())
    19  	return
    20  }
    21  
    22  // JSONSeeker handles arbitrary types and synthesizes a streaming encoder for them.
    23  func JSONSeeker(v interface{}) (r io.ReadSeeker, err error) {
    24  	if debug_on() {
    25  		jsonout, err := json.Marshal(v)
    26  		fmt.Printf("\n\nJSON IN: %+v \n JSON ERR: %+v\n", string(jsonout), err)
    27  	}
    28  	buf := new(bytes.Buffer)
    29  	err = json.NewEncoder(buf).Encode(v)
    30  	r = bytes.NewReader(buf.Bytes())
    31  	return
    32  }