Files
MeBox/internal/handler/discover.go
T

49 lines
1.5 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 handler — TMDb discovery endpoints.
package handler
import (
"net/http"
"github.com/gin-gonic/gin"
"go.uber.org/zap"
"github.com/ShukeBta/MediaStationGo/internal/service"
)
// trendingHandler 返回 TMDb 当日热门列表。
//
// 当本机无法连接 TMDb(GFW / 代理未配 / API key 无效)时,TMDb 调用会
// 在 15 秒后超时;这种情况下不应该让首页显示 500 错误,而是把空列表
// 直接返回——前端按 items.length === 0 渲染"暂无推荐"即可。
func trendingHandler(svc *service.Container) gin.HandlerFunc {
return func(c *gin.Context) {
items, err := svc.Discover.Trending(c.Request.Context())
if err != nil {
svc.Log.Warn("discover trending failed (returning empty list)", zap.Error(err))
c.JSON(http.StatusOK, gin.H{"items": []service.Match{}, "error": err.Error()})
return
}
if items == nil {
items = []service.Match{}
}
svc.Discover.WarmMatchArtwork(items)
c.JSON(http.StatusOK, gin.H{"items": items})
}
}
func popularHandler(svc *service.Container) gin.HandlerFunc {
return func(c *gin.Context) {
items, err := svc.Discover.Popular(c.Request.Context())
if err != nil {
svc.Log.Warn("discover popular failed (returning empty list)", zap.Error(err))
c.JSON(http.StatusOK, gin.H{"items": []service.Match{}, "error": err.Error()})
return
}
if items == nil {
items = []service.Match{}
}
svc.Discover.WarmMatchArtwork(items)
c.JSON(http.StatusOK, gin.H{"items": items})
}
}