Files
xk-hy-transit-go/internal/sync/upload_test_result.go
2026-05-28 17:03:08 +08:00

73 lines
2.0 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package syncer
import (
"fmt"
"strings"
"time"
"xk-hy-transit-go/internal/fileauth"
"xk-hy-transit-go/internal/hyfile"
)
// UploadTestResult Web 测试上传结果(含本次 FileAuth.java token 分步信息)。
type UploadTestResult struct {
FileID string
Filename string
Scope string
Parts fileauth.UploadTokenParts
}
// uploadTokenPartsForUpload 生成 FileAuth.java upload profile tokenscope=仅 bucket
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
}