github.com/git-lfs/git-lfs@v2.5.2+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  }