github.com/stffabi/git-lfs@v2.3.5-0.20180214015214-8eeaa8d88902+incompatible/lfsapi/body.go (about) 1 package lfsapi 2 3 import ( 4 "bytes" 5 "encoding/json" 6 "io" 7 "net/http" 8 "strconv" 9 ) 10 11 type ReadSeekCloser interface { 12 io.Seeker 13 io.ReadCloser 14 } 15 16 func MarshalToRequest(req *http.Request, obj interface{}) error { 17 by, err := json.Marshal(obj) 18 if err != nil { 19 return err 20 } 21 22 clen := len(by) 23 req.Header.Set("Content-Length", strconv.Itoa(clen)) 24 req.ContentLength = int64(clen) 25 req.Body = NewByteBody(by) 26 return nil 27 } 28 29 func NewByteBody(by []byte) ReadSeekCloser { 30 return &closingByteReader{Reader: bytes.NewReader(by)} 31 } 32 33 type closingByteReader struct { 34 *bytes.Reader 35 } 36 37 func (r *closingByteReader) Close() error { 38 return nil 39 }