package gameapi import ( "net/http" "hyapp/services/gateway-service/internal/client" "hyapp/services/gateway-service/internal/transport/http/httproutes" ) // Handler owns game-facing HTTP endpoints. // gateway only translates app/user context into game-service RPCs; game session state stays in game-service. type Handler struct { gameClient client.GameClient userAuthClient client.UserAuthClient userProfileClient client.UserProfileClient walletClient client.WalletClient // 热游固定回调地址先进入 hyapp gateway;chatapp3 老 token 需要原样转给 chatapp3,hyapp token 继续落到 game-service。 hotgameCompatHTTPClient *http.Client } type Config struct { GameClient client.GameClient UserAuthClient client.UserAuthClient UserProfileClient client.UserProfileClient WalletClient client.WalletClient } func New(config Config) *Handler { return &Handler{ gameClient: config.GameClient, userAuthClient: config.UserAuthClient, userProfileClient: config.UserProfileClient, walletClient: config.WalletClient, hotgameCompatHTTPClient: hotgameCompatHTTPClient(), } } func (h *Handler) Handlers() httproutes.GameHandlers { return httproutes.GameHandlers{ ListGames: h.listGames, ListRecentGames: h.listRecentGames, GetBridgeScript: h.getBridgeScript, LaunchGame: h.launchGame, GetDiceConfig: h.getDiceConfig, MatchDice: h.matchDice, CreateDiceMatch: h.createDiceMatch, JoinDiceMatch: h.joinDiceMatch, GetDiceMatch: h.getDiceMatch, RollDiceMatch: h.rollDiceMatch, CancelDiceMatch: h.cancelDiceMatch, GetRoomRPSConfig: h.getRoomRPSConfig, ListRoomRPSChallenges: h.listRoomRPSChallenges, CreateRoomRPSChallenge: h.createRoomRPSChallenge, AcceptRoomRPSChallenge: h.acceptRoomRPSChallenge, GetRoomRPSChallenge: h.getRoomRPSChallenge, HandleCallback: h.handleGameCallback, HandleHotgameGetUserInfo: h.handleHotgameGetUserInfo, HandleHotgameUpdateBalance: h.handleHotgameUpdateBalance, } } func (h *Handler) ListGames(writer http.ResponseWriter, request *http.Request) { h.listGames(writer, request) } func (h *Handler) ListRecentGames(writer http.ResponseWriter, request *http.Request) { h.listRecentGames(writer, request) } func (h *Handler) GetBridgeScript(writer http.ResponseWriter, request *http.Request) { h.getBridgeScript(writer, request) } func (h *Handler) LaunchGame(writer http.ResponseWriter, request *http.Request) { h.launchGame(writer, request) } func (h *Handler) GetDiceConfig(writer http.ResponseWriter, request *http.Request) { h.getDiceConfig(writer, request) } func (h *Handler) MatchDice(writer http.ResponseWriter, request *http.Request) { h.matchDice(writer, request) } func (h *Handler) CreateDiceMatch(writer http.ResponseWriter, request *http.Request) { h.createDiceMatch(writer, request) } func (h *Handler) JoinDiceMatch(writer http.ResponseWriter, request *http.Request) { h.joinDiceMatch(writer, request) } func (h *Handler) GetDiceMatch(writer http.ResponseWriter, request *http.Request) { h.getDiceMatch(writer, request) } func (h *Handler) RollDiceMatch(writer http.ResponseWriter, request *http.Request) { h.rollDiceMatch(writer, request) } func (h *Handler) CancelDiceMatch(writer http.ResponseWriter, request *http.Request) { h.cancelDiceMatch(writer, request) } func (h *Handler) GetRoomRPSConfig(writer http.ResponseWriter, request *http.Request) { h.getRoomRPSConfig(writer, request) } func (h *Handler) ListRoomRPSChallenges(writer http.ResponseWriter, request *http.Request) { h.listRoomRPSChallenges(writer, request) } func (h *Handler) CreateRoomRPSChallenge(writer http.ResponseWriter, request *http.Request) { h.createRoomRPSChallenge(writer, request) } func (h *Handler) AcceptRoomRPSChallenge(writer http.ResponseWriter, request *http.Request) { h.acceptRoomRPSChallenge(writer, request) } func (h *Handler) GetRoomRPSChallenge(writer http.ResponseWriter, request *http.Request) { h.getRoomRPSChallenge(writer, request) } func (h *Handler) HandleCallback(writer http.ResponseWriter, request *http.Request) { h.handleGameCallback(writer, request) } func (h *Handler) HandleHotgameGetUserInfo(writer http.ResponseWriter, request *http.Request) { h.handleHotgameGetUserInfo(writer, request) } func (h *Handler) HandleHotgameUpdateBalance(writer http.ResponseWriter, request *http.Request) { h.handleHotgameUpdateBalance(writer, request) }