This commit is contained in:
j2rong4cn
2025-07-06 00:52:25 +08:00
parent d2feb37110
commit 6ae2ab5eb5
8 changed files with 27 additions and 25 deletions

View File

@ -139,7 +139,7 @@ func (d *Pan123) newUpload(ctx context.Context, upReq *UploadResp, file model.Fi
return fmt.Errorf("upload url is empty, s3PreSignedUrls: %+v", s3PreSignedUrls) return fmt.Errorf("upload url is empty, s3PreSignedUrls: %+v", s3PreSignedUrls)
} }
reader.Seek(0, io.SeekStart) reader.Seek(0, io.SeekStart)
req, err := http.NewRequestWithContext(ctx, http.MethodPost, uploadUrl, rateLimitedRd) req, err := http.NewRequestWithContext(ctx, http.MethodPut, uploadUrl, rateLimitedRd)
if err != nil { if err != nil {
return err return err
} }

View File

@ -38,14 +38,14 @@ func (d *OnedriveSharelink) Init(ctx context.Context) error {
d.cron = cron.NewCron(time.Hour * 1) d.cron = cron.NewCron(time.Hour * 1)
d.cron.Do(func() { d.cron.Do(func() {
var err error var err error
d.Headers, err = d.getHeaders() d.Headers, err = d.getHeaders(ctx)
if err != nil { if err != nil {
log.Errorf("%+v", err) log.Errorf("%+v", err)
} }
}) })
// Get initial headers // Get initial headers
d.Headers, err = d.getHeaders() d.Headers, err = d.getHeaders(ctx)
if err != nil { if err != nil {
return err return err
} }
@ -59,7 +59,7 @@ func (d *OnedriveSharelink) Drop(ctx context.Context) error {
func (d *OnedriveSharelink) List(ctx context.Context, dir model.Obj, args model.ListArgs) ([]model.Obj, error) { func (d *OnedriveSharelink) List(ctx context.Context, dir model.Obj, args model.ListArgs) ([]model.Obj, error) {
path := dir.GetPath() path := dir.GetPath()
files, err := d.getFiles(path) files, err := d.getFiles(ctx, path)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -82,7 +82,7 @@ func (d *OnedriveSharelink) Link(ctx context.Context, file model.Obj, args model
if d.HeaderTime < time.Now().Unix()-1800 { if d.HeaderTime < time.Now().Unix()-1800 {
var err error var err error
log.Debug("headers are older than 30 minutes, get new headers") log.Debug("headers are older than 30 minutes, get new headers")
header, err = d.getHeaders() header, err = d.getHeaders(ctx)
if err != nil { if err != nil {
return nil, err return nil, err
} }

View File

@ -1,6 +1,7 @@
package onedrive_sharelink package onedrive_sharelink
import ( import (
"context"
"crypto/tls" "crypto/tls"
"encoding/json" "encoding/json"
"fmt" "fmt"
@ -131,7 +132,7 @@ func getAttrValue(n *html.Node, key string) string {
} }
// getHeaders constructs and returns the necessary HTTP headers for accessing the OneDrive share link // getHeaders constructs and returns the necessary HTTP headers for accessing the OneDrive share link
func (d *OnedriveSharelink) getHeaders() (http.Header, error) { func (d *OnedriveSharelink) getHeaders(ctx context.Context) (http.Header, error) {
header := http.Header{} header := http.Header{}
header.Set("User-Agent", base.UserAgent) header.Set("User-Agent", base.UserAgent)
header.Set("accept-language", "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6") header.Set("accept-language", "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6")
@ -142,7 +143,7 @@ func (d *OnedriveSharelink) getHeaders() (http.Header, error) {
if d.ShareLinkPassword == "" { if d.ShareLinkPassword == "" {
// Create a no-redirect client // Create a no-redirect client
clientNoDirect := NewNoRedirectCLient() clientNoDirect := NewNoRedirectCLient()
req, err := http.NewRequest("GET", d.ShareLinkURL, nil) req, err := http.NewRequestWithContext(ctx, http.MethodGet, d.ShareLinkURL, nil)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -180,9 +181,9 @@ func (d *OnedriveSharelink) getHeaders() (http.Header, error) {
} }
// getFiles retrieves the files from the OneDrive share link at the specified path // getFiles retrieves the files from the OneDrive share link at the specified path
func (d *OnedriveSharelink) getFiles(path string) ([]Item, error) { func (d *OnedriveSharelink) getFiles(ctx context.Context, path string) ([]Item, error) {
clientNoDirect := NewNoRedirectCLient() clientNoDirect := NewNoRedirectCLient()
req, err := http.NewRequest("GET", d.ShareLinkURL, nil) req, err := http.NewRequestWithContext(ctx, http.MethodGet, d.ShareLinkURL, nil)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -221,11 +222,11 @@ func (d *OnedriveSharelink) getFiles(path string) ([]Item, error) {
// Get redirectUrl // Get redirectUrl
answer, err := clientNoDirect.Do(req) answer, err := clientNoDirect.Do(req)
if err != nil { if err != nil {
d.Headers, err = d.getHeaders() d.Headers, err = d.getHeaders(ctx)
if err != nil { if err != nil {
return nil, err return nil, err
} }
return d.getFiles(path) return d.getFiles(ctx, path)
} }
defer answer.Body.Close() defer answer.Body.Close()
re := regexp.MustCompile(`templateUrl":"(.*?)"`) re := regexp.MustCompile(`templateUrl":"(.*?)"`)
@ -298,11 +299,11 @@ func (d *OnedriveSharelink) getFiles(path string) ([]Item, error) {
resp, err := client.Do(req) resp, err := client.Do(req)
if err != nil { if err != nil {
d.Headers, err = d.getHeaders() d.Headers, err = d.getHeaders(ctx)
if err != nil { if err != nil {
return nil, err return nil, err
} }
return d.getFiles(path) return d.getFiles(ctx, path)
} }
defer resp.Body.Close() defer resp.Body.Close()
var graphqlReq GraphQLRequest var graphqlReq GraphQLRequest
@ -328,11 +329,11 @@ func (d *OnedriveSharelink) getFiles(path string) ([]Item, error) {
resp, err := client.Do(req) resp, err := client.Do(req)
if err != nil { if err != nil {
d.Headers, err = d.getHeaders() d.Headers, err = d.getHeaders(ctx)
if err != nil { if err != nil {
return nil, err return nil, err
} }
return d.getFiles(path) return d.getFiles(ctx, path)
} }
defer resp.Body.Close() defer resp.Body.Close()
json.NewDecoder(resp.Body).Decode(&graphqlReqNEW) json.NewDecoder(resp.Body).Decode(&graphqlReqNEW)
@ -343,11 +344,11 @@ func (d *OnedriveSharelink) getFiles(path string) ([]Item, error) {
req.Header = tempHeader req.Header = tempHeader
resp, err := client.Do(req) resp, err := client.Do(req)
if err != nil { if err != nil {
d.Headers, err = d.getHeaders() d.Headers, err = d.getHeaders(ctx)
if err != nil { if err != nil {
return nil, err return nil, err
} }
return d.getFiles(path) return d.getFiles(ctx, path)
} }
defer resp.Body.Close() defer resp.Body.Close()
json.NewDecoder(resp.Body).Decode(&graphqlReqNEW) json.NewDecoder(resp.Body).Decode(&graphqlReqNEW)

View File

@ -3,6 +3,7 @@ package quark_uc_tv
import ( import (
"context" "context"
"fmt" "fmt"
"net/http"
"strconv" "strconv"
"time" "time"
@ -96,7 +97,7 @@ func (d *QuarkUCTV) List(ctx context.Context, dir model.Obj, args model.ListArgs
pageSize := int64(100) pageSize := int64(100)
for { for {
var filesData FilesData var filesData FilesData
_, err := d.request(ctx, "/file", "GET", func(req *resty.Request) { _, err := d.request(ctx, "/file", http.MethodGet, func(req *resty.Request) {
req.SetQueryParams(map[string]string{ req.SetQueryParams(map[string]string{
"method": "list", "method": "list",
"parent_fid": dir.GetID(), "parent_fid": dir.GetID(),
@ -127,7 +128,7 @@ func (d *QuarkUCTV) List(ctx context.Context, dir model.Obj, args model.ListArgs
func (d *QuarkUCTV) Link(ctx context.Context, file model.Obj, args model.LinkArgs) (*model.Link, error) { func (d *QuarkUCTV) Link(ctx context.Context, file model.Obj, args model.LinkArgs) (*model.Link, error) {
var fileLink FileLink var fileLink FileLink
_, err := d.request(ctx, "/file", "GET", func(req *resty.Request) { _, err := d.request(ctx, "/file", http.MethodGet, func(req *resty.Request) {
req.SetQueryParams(map[string]string{ req.SetQueryParams(map[string]string{
"method": "download", "method": "download",
"group_by": "source", "group_by": "source",

View File

@ -93,7 +93,7 @@ func (d *QuarkUCTV) getLoginCode(ctx context.Context) (string, error) {
QrData string `json:"qr_data"` QrData string `json:"qr_data"`
QueryToken string `json:"query_token"` QueryToken string `json:"query_token"`
} }
_, err := d.request(ctx, pathname, "GET", func(req *resty.Request) { _, err := d.request(ctx, pathname, http.MethodGet, func(req *resty.Request) {
req.SetQueryParams(map[string]string{ req.SetQueryParams(map[string]string{
"auth_type": "code", "auth_type": "code",
"client_id": d.conf.clientID, "client_id": d.conf.clientID,
@ -121,7 +121,7 @@ func (d *QuarkUCTV) getCode(ctx context.Context) (string, error) {
CommonRsp CommonRsp
Code string `json:"code"` Code string `json:"code"`
} }
_, err := d.request(ctx, pathname, "GET", func(req *resty.Request) { _, err := d.request(ctx, pathname, http.MethodGet, func(req *resty.Request) {
req.SetQueryParams(map[string]string{ req.SetQueryParams(map[string]string{
"client_id": d.conf.clientID, "client_id": d.conf.clientID,
"scope": "netdisk", "scope": "netdisk",

View File

@ -557,7 +557,7 @@ type chunk struct {
func DefaultHttpRequestFunc(ctx context.Context, params *HttpRequestParams) (*http.Response, error) { func DefaultHttpRequestFunc(ctx context.Context, params *HttpRequestParams) (*http.Response, error) {
header := http_range.ApplyRangeToHttpHeader(params.Range, params.HeaderRef) header := http_range.ApplyRangeToHttpHeader(params.Range, params.HeaderRef)
res, err := RequestHttp(ctx, "GET", header, params.URL) res, err := RequestHttp(ctx, http.MethodGet, header, params.URL)
if err != nil { if err != nil {
return res, err return res, err
} }

View File

@ -67,7 +67,7 @@ func RequestRangedHttp(ctx context.Context, link *model.Link, offset, length int
header := net.ProcessHeader(nil, link.Header) header := net.ProcessHeader(nil, link.Header)
header = http_range.ApplyRangeToHttpHeader(http_range.Range{Start: offset, Length: length}, header) header = http_range.ApplyRangeToHttpHeader(http_range.Range{Start: offset, Length: length}, header)
return net.RequestHttp(ctx, "GET", header, link.URL) return net.RequestHttp(ctx, http.MethodGet, header, link.URL)
} }
// 139 cloud does not properly return 206 http status code, add a hack here // 139 cloud does not properly return 206 http status code, add a hack here

View File

@ -383,7 +383,7 @@ func (c *Client) Link(path string) (string, http.Header, error) {
// ReadStream reads the stream for a given path // ReadStream reads the stream for a given path
func (c *Client) ReadStream(path string, callback func(rq *http.Request)) (io.ReadCloser, http.Header, error) { func (c *Client) ReadStream(path string, callback func(rq *http.Request)) (io.ReadCloser, http.Header, error) {
rs, err := c.req("GET", path, nil, callback) rs, err := c.req(http.MethodGet, path, nil, callback)
if err != nil { if err != nil {
return nil, nil, newPathErrorErr("ReadStream", path, err) return nil, nil, newPathErrorErr("ReadStream", path, err)
} }
@ -405,7 +405,7 @@ func (c *Client) ReadStream(path string, callback func(rq *http.Request)) (io.Re
// this function will emulate the behavior by skipping `offset` bytes and limiting the result // this function will emulate the behavior by skipping `offset` bytes and limiting the result
// to `length`. // to `length`.
func (c *Client) ReadStreamRange(path string, offset, length int64) (io.ReadCloser, error) { func (c *Client) ReadStreamRange(path string, offset, length int64) (io.ReadCloser, error) {
rs, err := c.req("GET", path, nil, func(r *http.Request) { rs, err := c.req(http.MethodGet, path, nil, func(r *http.Request) {
r.Header.Add("Range", fmt.Sprintf("bytes=%v-%v", offset, offset+length-1)) r.Header.Add("Range", fmt.Sprintf("bytes=%v-%v", offset, offset+length-1))
}) })
if err != nil { if err != nil {