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 }