func Mkfile( c rpc.Client, l rpc.Logger, ret interface{}, key string, hasKey bool, fsize int64, extra *PutExtra) (err error) { url := UP_HOST + "/mkfile/" + strconv.FormatInt(fsize, 10) if extra.MimeType != "" { url += "/mimeType/" + encode(extra.MimeType) } if hasKey { url += "/key/" + encode(key) } for k, v := range extra.Params { url += fmt.Sprintf("/%s/%s", k, encode(v)) } buf := make([]byte, 0, 176*len(extra.Progresses)) for _, prog := range extra.Progresses { buf = append(buf, prog.Ctx...) buf = append(buf, ',') } if len(buf) > 0 { buf = buf[:len(buf)-1] } return c.CallWith(l, ret, url, "application/octet-stream", bytes.NewReader(buf), len(buf)) }
func New(req *http.Request) (r SeekableCloser, err error) { if req.Body == nil { return nil, ErrNoBody } var ok bool if r, ok = req.Body.(SeekableCloser); ok { return } b, err2 := ReadAll(req) if err2 != nil { return nil, err2 } r = bytes.NewReader(b) req.Body = readCloser{r, req.Body} return }