From 2df82e85f43cc931736b2a41b54bc4c37ca22ebf Mon Sep 17 00:00:00 2001 From: okatu-loli Date: Sat, 8 Nov 2025 14:54:52 +0800 Subject: [PATCH] feat(driver): Added cookie-based authentication support for Gitee driver - Extended request handling to include `Cookie` header if provided - Updated metadata to include `cookie` field with appropriate documentation - Adjusted file link generation to propagate `Cookie` headers in requests --- drivers/gitee/driver.go | 8 +++++++- drivers/gitee/meta.go | 1 + drivers/gitee/util.go | 3 +++ 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/drivers/gitee/driver.go b/drivers/gitee/driver.go index 05575c8b..78a40094 100644 --- a/drivers/gitee/driver.go +++ b/drivers/gitee/driver.go @@ -4,6 +4,7 @@ import ( "context" "errors" "fmt" + "net/http" "net/url" stdpath "path" "strings" @@ -103,7 +104,12 @@ func (d *Gitee) Link(ctx context.Context, file model.Obj, args model.LinkArgs) ( downloadURL = content.DownloadURL } url := d.applyProxy(downloadURL) - return &model.Link{URL: url}, nil + return &model.Link{ + URL: url, + Header: http.Header{ + "Cookie": {d.Cookie}, + }, + }, nil } func (d *Gitee) newRequest() *resty.Request { diff --git a/drivers/gitee/meta.go b/drivers/gitee/meta.go index 68c09f66..2f926d63 100644 --- a/drivers/gitee/meta.go +++ b/drivers/gitee/meta.go @@ -13,6 +13,7 @@ type Addition struct { Repo string `json:"repo" type:"string" required:"true"` Ref string `json:"ref" type:"string" help:"Branch, tag or commit SHA, defaults to repository default branch"` DownloadProxy string `json:"download_proxy" type:"string" help:"Prefix added before download URLs, e.g. https://mirror.example.com/"` + Cookie string `json:"cookie" type:"string" help:"Cookie returned from user info request"` } var config = driver.Config{ diff --git a/drivers/gitee/util.go b/drivers/gitee/util.go index fca680b7..fbef972a 100644 --- a/drivers/gitee/util.go +++ b/drivers/gitee/util.go @@ -13,6 +13,9 @@ func (d *Gitee) getRepo() (*Repo, error) { if d.Token != "" { req.SetQueryParam("access_token", d.Token) } + if d.Cookie != "" { + req.SetHeader("Cookie", d.Cookie) + } escapedOwner := url.PathEscape(d.Owner) escapedRepo := url.PathEscape(d.Repo) res, err := req.Get(fmt.Sprintf("/repos/%s/%s", escapedOwner, escapedRepo))