mirror of https://github.com/Xhofe/alist
parent
7d20a01dba
commit
5e8bfb017e
|
@ -98,7 +98,7 @@ func (d *Pan123) Link(ctx context.Context, file model.Obj, args model.LinkArgs)
|
||||||
}
|
}
|
||||||
u_ := u.String()
|
u_ := u.String()
|
||||||
log.Debug("download url: ", u_)
|
log.Debug("download url: ", u_)
|
||||||
res, err := base.NoRedirectClient.R().Get(u_)
|
res, err := base.NoRedirectClient.R().SetHeader("Referer", "https://www.123pan.com/").Get(u_)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -112,6 +112,9 @@ func (d *Pan123) Link(ctx context.Context, file model.Obj, args model.LinkArgs)
|
||||||
} else if res.StatusCode() == 200 {
|
} else if res.StatusCode() == 200 {
|
||||||
link.URL = utils.Json.Get(res.Body(), "data", "redirect_url").ToString()
|
link.URL = utils.Json.Get(res.Body(), "data", "redirect_url").ToString()
|
||||||
}
|
}
|
||||||
|
link.Header = http.Header{
|
||||||
|
"Referer": []string{"https://www.123pan.com/"},
|
||||||
|
}
|
||||||
return &link, nil
|
return &link, nil
|
||||||
} else {
|
} else {
|
||||||
return nil, fmt.Errorf("can't convert obj")
|
return nil, fmt.Errorf("can't convert obj")
|
||||||
|
@ -235,6 +238,7 @@ func (d *Pan123) Put(ctx context.Context, dstDir model.Obj, stream model.FileStr
|
||||||
}
|
}
|
||||||
if resp.Data.AccessKeyId == "" || resp.Data.SecretAccessKey == "" || resp.Data.SessionToken == "" {
|
if resp.Data.AccessKeyId == "" || resp.Data.SecretAccessKey == "" || resp.Data.SessionToken == "" {
|
||||||
err = d.newUpload(ctx, &resp, stream, uploadFile, up)
|
err = d.newUpload(ctx, &resp, stream, uploadFile, up)
|
||||||
|
return err
|
||||||
} else {
|
} else {
|
||||||
cfg := &aws.Config{
|
cfg := &aws.Config{
|
||||||
Credentials: credentials.NewStaticCredentials(resp.Data.AccessKeyId, resp.Data.SecretAccessKey, resp.Data.SessionToken),
|
Credentials: credentials.NewStaticCredentials(resp.Data.AccessKeyId, resp.Data.SecretAccessKey, resp.Data.SessionToken),
|
||||||
|
|
|
@ -34,14 +34,17 @@ func (d *Pan123) getS3PreSignedUrls(ctx context.Context, upReq *UploadResp, star
|
||||||
return &s3PreSignedUrls, nil
|
return &s3PreSignedUrls, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (d *Pan123) completeS3(ctx context.Context, upReq *UploadResp) error {
|
func (d *Pan123) completeS3(ctx context.Context, upReq *UploadResp, file model.FileStreamer, isMultipart bool) error {
|
||||||
data := base.Json{
|
data := base.Json{
|
||||||
|
"StorageNode": upReq.Data.StorageNode,
|
||||||
"bucket": upReq.Data.Bucket,
|
"bucket": upReq.Data.Bucket,
|
||||||
|
"fileId": upReq.Data.FileId,
|
||||||
|
"fileSize": file.GetSize(),
|
||||||
|
"isMultipart": isMultipart,
|
||||||
"key": upReq.Data.Key,
|
"key": upReq.Data.Key,
|
||||||
"uploadId": upReq.Data.UploadId,
|
"uploadId": upReq.Data.UploadId,
|
||||||
"StorageNode": upReq.Data.StorageNode,
|
|
||||||
}
|
}
|
||||||
_, err := d.request(S3Complete, http.MethodPost, func(req *resty.Request) {
|
_, err := d.request(UploadCompleteV2, http.MethodPost, func(req *resty.Request) {
|
||||||
req.SetBody(data).SetContext(ctx)
|
req.SetBody(data).SetContext(ctx)
|
||||||
}, nil)
|
}, nil)
|
||||||
return err
|
return err
|
||||||
|
@ -83,7 +86,7 @@ func (d *Pan123) newUpload(ctx context.Context, upReq *UploadResp, file model.Fi
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// complete s3 upload
|
// complete s3 upload
|
||||||
return d.completeS3(ctx, upReq)
|
return d.completeS3(ctx, upReq, file, chunkCount > 1)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (d *Pan123) uploadS3Chunk(ctx context.Context, upReq *UploadResp, s3PreSignedUrls *S3PreSignedURLs, cur, end int, reader io.Reader, curSize int64, retry bool) error {
|
func (d *Pan123) uploadS3Chunk(ctx context.Context, upReq *UploadResp, s3PreSignedUrls *S3PreSignedURLs, cur, end int, reader io.Reader, curSize int64, retry bool) error {
|
||||||
|
|
|
@ -15,19 +15,23 @@ import (
|
||||||
// do others that not defined in Driver interface
|
// do others that not defined in Driver interface
|
||||||
|
|
||||||
const (
|
const (
|
||||||
API = "https://www.123pan.com/b/api"
|
AApi = "https://www.123pan.com/a/api"
|
||||||
SignIn = API + "/user/sign_in"
|
BApi = "https://www.123pan.com/b/api"
|
||||||
UserInfo = API + "/user/info"
|
MainApi = AApi
|
||||||
FileList = API + "/file/list/new"
|
SignIn = MainApi + "/user/sign_in"
|
||||||
DownloadInfo = "https://www.123pan.com/a/api/file/download_info"
|
UserInfo = MainApi + "/user/info"
|
||||||
Mkdir = API + "/file/upload_request"
|
FileList = MainApi + "/file/list/new"
|
||||||
Move = API + "/file/mod_pid"
|
DownloadInfo = MainApi + "/file/download_info"
|
||||||
Rename = API + "/file/rename"
|
Mkdir = MainApi + "/file/upload_request"
|
||||||
Trash = API + "/file/trash"
|
Move = MainApi + "/file/mod_pid"
|
||||||
UploadRequest = API + "/file/upload_request"
|
Rename = MainApi + "/file/rename"
|
||||||
UploadComplete = API + "/file/upload_complete"
|
Trash = MainApi + "/file/trash"
|
||||||
S3PreSignedUrls = API + "/file/s3_repare_upload_parts_batch"
|
UploadRequest = MainApi + "/file/upload_request"
|
||||||
S3Complete = API + "/file/s3_complete_multipart_upload"
|
UploadComplete = MainApi + "/file/upload_complete"
|
||||||
|
S3PreSignedUrls = MainApi + "/file/s3_repare_upload_parts_batch"
|
||||||
|
S3Auth = MainApi + "/file/s3_upload_object/auth"
|
||||||
|
UploadCompleteV2 = MainApi + "/file/upload_complete/v2"
|
||||||
|
S3Complete = MainApi + "/file/s3_complete_multipart_upload"
|
||||||
)
|
)
|
||||||
|
|
||||||
func (d *Pan123) login() error {
|
func (d *Pan123) login() error {
|
||||||
|
@ -42,6 +46,7 @@ func (d *Pan123) login() error {
|
||||||
body = base.Json{
|
body = base.Json{
|
||||||
"passport": d.Username,
|
"passport": d.Username,
|
||||||
"password": d.Password,
|
"password": d.Password,
|
||||||
|
"remember": true,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
res, err := base.RestyClient.R().
|
res, err := base.RestyClient.R().
|
||||||
|
@ -61,6 +66,7 @@ func (d *Pan123) request(url string, method string, callback base.ReqCallback, r
|
||||||
req := base.RestyClient.R()
|
req := base.RestyClient.R()
|
||||||
req.SetHeaders(map[string]string{
|
req.SetHeaders(map[string]string{
|
||||||
"origin": "https://www.123pan.com",
|
"origin": "https://www.123pan.com",
|
||||||
|
"referer": "https://www.123pan.com/",
|
||||||
"authorization": "Bearer " + d.AccessToken,
|
"authorization": "Bearer " + d.AccessToken,
|
||||||
"platform": "web",
|
"platform": "web",
|
||||||
"app-version": "1.2",
|
"app-version": "1.2",
|
||||||
|
|
Loading…
Reference in New Issue