Files
go-123pan-pic/internal/service/image_service.go
sakuradairong 591f521960
Some checks failed
Go Build & Release / build (amd64, imagehost-linux-amd64, linux) (push) Has been cancelled
Go Build & Release / build (amd64, imagehost-macos-amd64, darwin) (push) Has been cancelled
Go Build & Release / build (amd64, imagehost-windows-amd64.exe, windows) (push) Has been cancelled
Go Build & Release / build (arm64, imagehost-linux-arm64, linux) (push) Has been cancelled
Go Build & Release / build (arm64, imagehost-macos-arm64, darwin) (push) Has been cancelled
Go Build & Release / docker (push) Has been cancelled
fix: resolve build, XSS, upload, and config issues
- go.mod: fix version 1.25.0 -> 1.19, use real dependency versions
- go.sum: regenerate from resolved real dependencies
- static/js/main.js: eliminate innerHTML XSS in renderGallery/uploadFile;
  add error toast for non-403 responses; created_at fallback
- internal/handler/upload.go: add MIME magic validation and 50MB file limit
- internal/pan123/model.go: unify FileListReq JSON tags (parentFileID/lastFileID)
- internal/service/image_service.go: TrimRight -> TrimSuffix
- internal/service/upload_service.go: TrimRight -> TrimSuffix;
  implement multi-slice upload using io.SectionReader
2026-05-17 15:11:37 +08:00

45 lines
944 B
Go

package service
import (
"fmt"
"strings"
"imagehost/internal/pan123"
)
type ImageService struct {
client *pan123.Client
parentFileID string
customDomain string
}
func NewImageService(client *pan123.Client, parentFileID, customDomain string) *ImageService {
return &ImageService{
client: client,
parentFileID: parentFileID,
customDomain: strings.TrimSuffix(customDomain, "/"),
}
}
func (s *ImageService) GetImageItems() ([]pan123.FileItem, error) {
items, _, err := s.client.GetFileList(s.parentFileID, 100, "")
if err != nil {
return nil, fmt.Errorf("获取列表失败: %w", err)
}
for i := range items {
if items[i].UserSelfURL == "" && s.customDomain != "" {
items[i].UserSelfURL = fmt.Sprintf("%s/%s", s.customDomain, items[i].Filename)
}
}
return items, nil
}
func (s *ImageService) DeleteImages(ids []string) error {
if len(ids) == 0 {
return nil
}
return s.client.DeleteFiles(ids)
}