...
1 package autorest
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 import (
18 "bytes"
19 "io"
20 "io/ioutil"
21 "net/http"
22 )
23
24
25 func NewRetriableRequest(req *http.Request) *RetriableRequest {
26 return &RetriableRequest{req: req}
27 }
28
29
30 func (rr *RetriableRequest) Request() *http.Request {
31 return rr.req
32 }
33
34 func (rr *RetriableRequest) prepareFromByteReader() (err error) {
35
36 b := []byte{}
37 if rr.req.ContentLength > 0 {
38 b = make([]byte, rr.req.ContentLength)
39 _, err = io.ReadFull(rr.req.Body, b)
40 if err != nil {
41 return err
42 }
43 } else {
44 b, err = ioutil.ReadAll(rr.req.Body)
45 if err != nil {
46 return err
47 }
48 }
49 rr.br = bytes.NewReader(b)
50 rr.req.Body = ioutil.NopCloser(rr.br)
51 return err
52 }
53
View as plain text