summaryrefslogtreecommitdiffstats
path: root/modules
diff options
context:
space:
mode:
authorZoupers Zou <1171443643@qq.com>2024-06-12 06:22:28 +0800
committerGitHub <noreply@github.com>2024-06-11 22:22:28 +0000
commite25d6960b5749fbf7f88ebb6b27878c0459817da (patch)
tree5d5b583916f57cdc000d86be8be2a446c428c7d1 /modules
parentfc2d75f86d77b022ece848acf2581c14ef21d43b (diff)
downloadgitea-e25d6960b5749fbf7f88ebb6b27878c0459817da.tar.gz
gitea-e25d6960b5749fbf7f88ebb6b27878c0459817da.zip
Fix #31185 try fix lfs download from bitbucket failed (#31201)
Fix #31185
Diffstat (limited to 'modules')
-rw-r--r--modules/lfs/http_client.go4
-rw-r--r--modules/lfs/http_client_test.go4
-rw-r--r--modules/lfs/shared.go2
-rw-r--r--modules/lfs/transferadapter.go1
-rw-r--r--modules/lfs/transferadapter_test.go2
5 files changed, 8 insertions, 5 deletions
diff --git a/modules/lfs/http_client.go b/modules/lfs/http_client.go
index e06879baea..f5ddd38b09 100644
--- a/modules/lfs/http_client.go
+++ b/modules/lfs/http_client.go
@@ -211,7 +211,7 @@ func createRequest(ctx context.Context, method, url string, headers map[string]s
for key, value := range headers {
req.Header.Set(key, value)
}
- req.Header.Set("Accept", MediaType)
+ req.Header.Set("Accept", AcceptHeader)
return req, nil
}
@@ -251,6 +251,6 @@ func handleErrorResponse(resp *http.Response) error {
return err
}
- log.Trace("ErrorResponse: %v", er)
+ log.Trace("ErrorResponse(%v): %v", resp.Status, er)
return errors.New(er.Message)
}
diff --git a/modules/lfs/http_client_test.go b/modules/lfs/http_client_test.go
index 7459d9c0c9..7431132f76 100644
--- a/modules/lfs/http_client_test.go
+++ b/modules/lfs/http_client_test.go
@@ -155,7 +155,7 @@ func TestHTTPClientDownload(t *testing.T) {
hc := &http.Client{Transport: RoundTripFunc(func(req *http.Request) *http.Response {
assert.Equal(t, "POST", req.Method)
assert.Equal(t, MediaType, req.Header.Get("Content-type"))
- assert.Equal(t, MediaType, req.Header.Get("Accept"))
+ assert.Equal(t, AcceptHeader, req.Header.Get("Accept"))
var batchRequest BatchRequest
err := json.NewDecoder(req.Body).Decode(&batchRequest)
@@ -263,7 +263,7 @@ func TestHTTPClientUpload(t *testing.T) {
hc := &http.Client{Transport: RoundTripFunc(func(req *http.Request) *http.Response {
assert.Equal(t, "POST", req.Method)
assert.Equal(t, MediaType, req.Header.Get("Content-type"))
- assert.Equal(t, MediaType, req.Header.Get("Accept"))
+ assert.Equal(t, AcceptHeader, req.Header.Get("Accept"))
var batchRequest BatchRequest
err := json.NewDecoder(req.Body).Decode(&batchRequest)
diff --git a/modules/lfs/shared.go b/modules/lfs/shared.go
index 6b2e55f2fb..80f4fed00d 100644
--- a/modules/lfs/shared.go
+++ b/modules/lfs/shared.go
@@ -10,6 +10,8 @@ import (
const (
// MediaType contains the media type for LFS server requests
MediaType = "application/vnd.git-lfs+json"
+ // Some LFS servers offer content with other types, so fallback to '*/*' if application/vnd.git-lfs+json cannot be served
+ AcceptHeader = "application/vnd.git-lfs+json;q=0.9, */*;q=0.8"
)
// BatchRequest contains multiple requests processed in one batch operation.
diff --git a/modules/lfs/transferadapter.go b/modules/lfs/transferadapter.go
index d425b91946..fbc3a3ad8c 100644
--- a/modules/lfs/transferadapter.go
+++ b/modules/lfs/transferadapter.go
@@ -37,6 +37,7 @@ func (a *BasicTransferAdapter) Download(ctx context.Context, l *Link) (io.ReadCl
if err != nil {
return nil, err
}
+ log.Debug("Download Request: %+v", req)
resp, err := performRequest(ctx, a.client, req)
if err != nil {
return nil, err
diff --git a/modules/lfs/transferadapter_test.go b/modules/lfs/transferadapter_test.go
index 6023cd07d3..7fec137efe 100644
--- a/modules/lfs/transferadapter_test.go
+++ b/modules/lfs/transferadapter_test.go
@@ -26,7 +26,7 @@ func TestBasicTransferAdapter(t *testing.T) {
p := Pointer{Oid: "b5a2c96250612366ea272ffac6d9744aaf4b45aacd96aa7cfcb931ee3b558259", Size: 5}
roundTripHandler := func(req *http.Request) *http.Response {
- assert.Equal(t, MediaType, req.Header.Get("Accept"))
+ assert.Equal(t, AcceptHeader, req.Header.Get("Accept"))
assert.Equal(t, "test-value", req.Header.Get("test-header"))
url := req.URL.String()