Files

29 lines
1.1 KiB
Go

package httpserver
import (
"github.com/dujiao-next/internal/app/container"
"github.com/dujiao-next/internal/app/httpserver/middleware"
upstreamtransport "github.com/dujiao-next/internal/modules/upstreamapi/transport/http"
"github.com/gin-gonic/gin"
"github.com/redis/go-redis/v9"
)
func registerUpstreamRoutes(
apiV1 *gin.RouterGroup,
c *container.Container,
upstreamHandler *upstreamtransport.Handler,
redisClient *redis.Client,
upstreamAPIRule middleware.RateLimitRule,
callbackRule middleware.RateLimitRule,
) {
// 上游 API(本站作为 B 站点,暴露给下游 A 调用)
upstreamAPI := apiV1.Group("/upstream")
upstreamAPI.Use(middleware.RateLimitMiddleware(redisClient, upstreamAPIRule, middleware.KeyByUpstreamApiKey))
upstreamAPI.Use(middleware.UpstreamAPIAuthMiddleware(c.ApiCredentialRepo))
upstreamtransport.RegisterAuthenticatedRoutes(upstreamAPI, upstreamHandler)
// 上游回调接收(本站作为 A 站点,接收 B 的回调)
apiV1.POST("/upstream/callback", middleware.RateLimitMiddleware(redisClient, callbackRule, middleware.KeyByIP), upstreamHandler.HandleCallback)
}