56 lines
1.4 KiB
Go
56 lines
1.4 KiB
Go
package admin
|
|
|
|
import (
|
|
"net/http"
|
|
"strings"
|
|
|
|
"github.com/Wei-Shaw/sub2api/internal/pkg/response"
|
|
"github.com/Wei-Shaw/sub2api/internal/service"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
// ModelHandler handles admin model listing requests.
|
|
type ModelHandler struct {
|
|
sora2apiService *service.Sora2APIService
|
|
}
|
|
|
|
// NewModelHandler creates a new ModelHandler.
|
|
func NewModelHandler(sora2apiService *service.Sora2APIService) *ModelHandler {
|
|
return &ModelHandler{
|
|
sora2apiService: sora2apiService,
|
|
}
|
|
}
|
|
|
|
// List handles listing models for a specific platform
|
|
// GET /api/v1/admin/models?platform=sora
|
|
func (h *ModelHandler) List(c *gin.Context) {
|
|
platform := strings.TrimSpace(strings.ToLower(c.Query("platform")))
|
|
if platform == "" {
|
|
response.BadRequest(c, "platform is required")
|
|
return
|
|
}
|
|
|
|
switch platform {
|
|
case service.PlatformSora:
|
|
if h.sora2apiService == nil || !h.sora2apiService.Enabled() {
|
|
response.Error(c, http.StatusServiceUnavailable, "sora2api not configured")
|
|
return
|
|
}
|
|
models, err := h.sora2apiService.ListModels(c.Request.Context())
|
|
if err != nil {
|
|
response.Error(c, http.StatusServiceUnavailable, "failed to fetch sora models")
|
|
return
|
|
}
|
|
ids := make([]string, 0, len(models))
|
|
for _, m := range models {
|
|
if strings.TrimSpace(m.ID) != "" {
|
|
ids = append(ids, m.ID)
|
|
}
|
|
}
|
|
response.Success(c, ids)
|
|
default:
|
|
response.BadRequest(c, "unsupported platform")
|
|
}
|
|
}
|