Files
xk-hy-transit-go/internal/sync/upload_test_result.go

73 lines
2.0 KiB
Go
Raw Normal View History

2026-05-28 16:39:51 +08:00
package syncer
import (
"fmt"
"strings"
"time"
"xk-hy-transit-go/internal/fileauth"
"xk-hy-transit-go/internal/hyfile"
)
2026-05-28 17:03:08 +08:00
// UploadTestResult Web 测试上传结果(含本次 FileAuth.java token 分步信息)。
2026-05-28 16:39:51 +08:00
type UploadTestResult struct {
FileID string
Filename string
Scope string
Parts fileauth.UploadTokenParts
}
2026-05-28 17:03:08 +08:00
// uploadTokenPartsForUpload 生成 FileAuth.java upload profile tokenscope=仅 bucket
2026-05-28 16:39:51 +08:00
func (r *Runner) uploadTokenPartsForUpload() (fileauth.UploadTokenParts, error) {
r.configMu.RLock()
key := strings.TrimSpace(r.hyAppKey)
secret := strings.TrimSpace(r.hyAppSecret)
bucket := strings.TrimSpace(r.fileBucket)
r.configMu.RUnlock()
if key == "" || secret == "" || bucket == "" {
return fileauth.UploadTokenParts{}, fmt.Errorf("appKey/appSecret/fileBucket 未配置")
}
deadline := time.Now().Unix() + 3600
return fileauth.BuildUploadTokenPartsForUpload(key, secret, bucket, deadline)
}
// UploadTestPDF 刷新配置后上传测试 PDF返回 fileId 与本次 token 分步信息。
func (r *Runner) UploadTestPDF(pdf []byte, filename string) (*UploadTestResult, error) {
if err := r.ReloadCloudConfig(); err != nil {
return nil, err
}
if strings.TrimSpace(filename) == "" {
filename = "prescription.pdf"
}
parts, err := r.uploadTokenPartsForUpload()
if err != nil {
return nil, err
}
r.configMu.RLock()
url := r.fileUploadURL
bucket := strings.TrimSpace(r.fileBucket)
r.configMu.RUnlock()
res := &UploadTestResult{
Filename: filename,
Scope: bucket,
Parts: parts,
}
fileID, err := hyfile.UploadPDF(pdf, filename, url, parts.UploadToken, r.cfg.ForwardSharedSecret)
if err != nil {
return res, err
}
res.FileID = fileID
return res, nil
}
// uploadTokenForFile 生产上传凭证scope=仅 bucket
func (r *Runner) uploadTokenForFile(filename string) (string, error) {
_ = filename
parts, err := r.uploadTokenPartsForUpload()
if err != nil {
return "", err
}
return parts.UploadToken, nil
}