tq: teach basic upload adapter to use lfsapi.Client

This commit is contained in:
risk danger olson 2017-01-04 15:27:07 -07:00
parent 3d72a371e8
commit a8dc86bccb

@ -3,14 +3,13 @@ package tq
import ( import (
"io" "io"
"io/ioutil" "io/ioutil"
"net/http"
"os" "os"
"path/filepath" "path/filepath"
"strconv" "strconv"
"strings"
"github.com/git-lfs/git-lfs/config"
"github.com/git-lfs/git-lfs/errors" "github.com/git-lfs/git-lfs/errors"
"github.com/git-lfs/git-lfs/httputil"
"github.com/git-lfs/git-lfs/lfsapi"
"github.com/git-lfs/git-lfs/progress" "github.com/git-lfs/git-lfs/progress"
) )
@ -50,11 +49,15 @@ func (a *basicUploadAdapter) DoTransfer(ctx interface{}, t *Transfer, cb Progres
// return fmt.Errorf("No upload action for this object.") // return fmt.Errorf("No upload action for this object.")
} }
req, err := httputil.NewHttpRequest("PUT", rel.Href, rel.Header) req, err := http.NewRequest("PUT", rel.Href, nil)
if err != nil { if err != nil {
return err return err
} }
for key, value := range rel.Header {
req.Header.Set(key, value)
}
if len(req.Header.Get("Content-Type")) == 0 { if len(req.Header.Get("Content-Type")) == 0 {
req.Header.Set("Content-Type", "application/octet-stream") req.Header.Set("Content-Type", "application/octet-stream")
} }
@ -97,11 +100,17 @@ func (a *basicUploadAdapter) DoTransfer(ctx interface{}, t *Transfer, cb Progres
req.Body = ioutil.NopCloser(reader) req.Body = ioutil.NopCloser(reader)
res, err := httputil.DoHttpRequest(config.Config, req, !t.Authenticated) var res *http.Response
if t.Authenticated {
res, err = a.apiClient.Do(req)
} else {
res, err = a.apiClient.DoWithAuth(a.remote, req)
}
if err != nil { if err != nil {
return errors.NewRetriableError(err) return errors.NewRetriableError(err)
} }
httputil.LogTransfer(config.Config, "lfs.data.upload", res)
a.apiClient.LogResponse("lfs.data.upload", res)
// A status code of 403 likely means that an authentication token for the // A status code of 403 likely means that an authentication token for the
// upload has expired. This can be safely retried. // upload has expired. This can be safely retried.
@ -111,14 +120,17 @@ func (a *basicUploadAdapter) DoTransfer(ctx interface{}, t *Transfer, cb Progres
} }
if res.StatusCode > 299 { if res.StatusCode > 299 {
return errors.Wrapf(nil, "Invalid status for %s: %d", httputil.TraceHttpReq(req), res.StatusCode) return errors.Wrapf(nil, "Invalid status for %s %s: %d",
req.Method,
strings.SplitN(req.URL.String(), "?", 2)[0],
res.StatusCode,
)
} }
io.Copy(ioutil.Discard, res.Body) io.Copy(ioutil.Discard, res.Body)
res.Body.Close() res.Body.Close()
cli := &lfsapi.Client{} return verifyUpload(a.apiClient, t)
return verifyUpload(cli, t)
} }
// startCallbackReader is a reader wrapper which calls a function as soon as the // startCallbackReader is a reader wrapper which calls a function as soon as the