fix(123): overwrite upload if file has no change (close #2324)

pull/2338/head
Noah Hsu 2022-11-14 17:58:49 +08:00
parent 3b6d8987db
commit aa9ba289bb
3 changed files with 11 additions and 5 deletions

View File

@ -4,9 +4,9 @@ import (
"bytes" "bytes"
"context" "context"
"crypto/md5" "crypto/md5"
"encoding/base64"
"encoding/binary" "encoding/binary"
"encoding/hex" "encoding/hex"
"encoding/base64"
"fmt" "fmt"
"io" "io"
"net/http" "net/http"
@ -229,13 +229,13 @@ func (d *Pan123) Put(ctx context.Context, dstDir model.Obj, stream model.FileStr
"type": 0, "type": 0,
} }
var resp UploadResp var resp UploadResp
_, err := d.request("https://www.123pan.com/api/file/upload_request", http.MethodPost, func(req *resty.Request) { _, err := d.request("https://www.123pan.com/a/api/file/upload_request", http.MethodPost, func(req *resty.Request) {
req.SetBody(data) req.SetBody(data)
}, &resp) }, &resp)
if err != nil { if err != nil {
return err return err
} }
if resp.Data.Key == "" { if resp.Data.Reuse || resp.Data.Key == "" {
return nil return nil
} }
cfg := &aws.Config{ cfg := &aws.Config{

View File

@ -85,5 +85,6 @@ type UploadResp struct {
SecretAccessKey string `json:"SecretAccessKey"` SecretAccessKey string `json:"SecretAccessKey"`
SessionToken string `json:"SessionToken"` SessionToken string `json:"SessionToken"`
FileId int64 `json:"FileId"` FileId int64 `json:"FileId"`
Reuse bool `json:"Reuse"`
} `json:"data"` } `json:"data"`
} }

View File

@ -15,7 +15,7 @@ import (
func (d *Pan123) login() error { func (d *Pan123) login() error {
var body base.Json var body base.Json
url := "https://www.123pan.com/api/user/sign_in" url := "https://www.123pan.com/a/api/user/sign_in"
if utils.IsEmailFormat(d.Username) { if utils.IsEmailFormat(d.Username) {
body = base.Json{ body = base.Json{
"mail": d.Username, "mail": d.Username,
@ -45,7 +45,12 @@ func (d *Pan123) login() error {
func (d *Pan123) request(url string, method string, callback base.ReqCallback, resp interface{}) ([]byte, error) { func (d *Pan123) request(url string, method string, callback base.ReqCallback, resp interface{}) ([]byte, error) {
req := base.RestyClient.R() req := base.RestyClient.R()
req.SetHeader("Authorization", "Bearer "+d.AccessToken) req.SetHeaders(map[string]string{
"origin": "https://www.123pan.com",
"authorization": "Bearer " + d.AccessToken,
"platform": "web",
"app-version": "1.2",
})
if callback != nil { if callback != nil {
callback(req) callback(req)
} }