package server import ( "fmt" "github.com/go-kratos/kratos/v2/log" "github.com/go-kratos/kratos/v2/middleware/logging" "github.com/go-kratos/kratos/v2/middleware/recovery" "github.com/go-kratos/kratos/v2/transport/http" "github.com/gorilla/handlers" "github.com/gorilla/mux" "matchmaking-system/internal/conf" "matchmaking-system/internal/data/socket" "matchmaking-system/internal/pkg/flags" "matchmaking-system/internal/pkg/logging/applogger" "matchmaking-system/internal/service" backend "matchmaking-system/api/matchmaking/v1/backend" block "matchmaking-system/api/matchmaking/v1/block" forex "matchmaking-system/api/matchmaking/v1/forex" money "matchmaking-system/api/matchmaking/v1/money" option "matchmaking-system/api/matchmaking/v1/option" order "matchmaking-system/api/matchmaking/v1/order" share "matchmaking-system/api/matchmaking/v1/share" virtually "matchmaking-system/api/matchmaking/v1/virtually" ) // NewHTTPServer // // @Description: // @param c // @param s // @param logger // @return *http.Server func NewHTTPServer(c *conf.Server, s *service.ConduitService, logger log.Logger) *http.Server { var opts = []http.ServerOption{ http.Middleware( recovery.Recovery(), logging.Server(logger), ), http.Filter(handlers.CORS( handlers.AllowedHeaders([]string{"X-Requested-With", "Content-Type", "Authorization", "token", "Language"}), handlers.AllowedMethods([]string{"GET", "POST", "PUT", "HEAD", "OPTIONS"}), handlers.AllowedOrigins([]string{"*"}), handlers.AllowCredentials(), )), } if c.Http.Network != "" { opts = append(opts, http.Network(c.Http.Network)) } if c.Http.Addr != "" { opts = append(opts, http.Address(c.Http.Addr)) } // wss 订单订阅行情 var wss string routerQuotes := mux.NewRouter() switch flags.CheckEnvironment { case flags.CheckSport: // Spots Wss wss = fmt.Sprintf("/%v", flags.SpotsWss) case flags.CheckContract: // Contract Wss wss = fmt.Sprintf("/%v", flags.ContractWss) case flags.CheckSecond: // Second Wss wss = fmt.Sprintf("/%v", flags.SecondWss) case flags.CheckForex: // Forex Wss wss = fmt.Sprintf("/%v", flags.ForexWss) case flags.CheckMoney: // Money Wss wss = fmt.Sprintf("/%v", flags.MoneyWss) case flags.CheckShareUs: // Share Us Wss wss = fmt.Sprintf("/%v", flags.ShareUsWss) case flags.CheckShareMys: // Share Mys Wss wss = fmt.Sprintf("/%v", flags.ShareMysWss) case flags.CheckShareTha: // Share Tha Wss wss = fmt.Sprintf("/%v", flags.ShareThaWss) case flags.CheckShareIdn: // Share Idn Wss wss = fmt.Sprintf("/%v", flags.ShareIdnWss) case flags.CheckShareInr: // Share Inr Wss wss = fmt.Sprintf("/%v", flags.ShareInrWss) case flags.CheckShareSgd: // Share Sgd Wss wss = fmt.Sprintf("/%v", flags.ShareSgdWss) case flags.CheckShareGbx: // Share Gbx Wss wss = fmt.Sprintf("/%v", flags.ShareGbxWss) case flags.CheckShareHkd: // Share Hkd Wss wss = fmt.Sprintf("/%v", flags.ShareHkdWss) case flags.CheckShareEur: // Share Eur Wss wss = fmt.Sprintf("/%v", flags.ShareEurWss) case flags.CheckShareFur: // Share Fur Wss wss = fmt.Sprintf("/%v", flags.ShareFurWss) case flags.CheckShareJpy: // Share Jpy Wss wss = fmt.Sprintf("/%v", flags.ShareJpyWss) case flags.CheckShareBrl: // Share Brl Wss wss = fmt.Sprintf("/%v", flags.ShareBrlWss) case flags.CheckShareBlk: // Share Blk Wss wss = fmt.Sprintf("/%v", flags.ShareBlkWss) case flags.CheckOptionInr: // Option Inr Wss wss = fmt.Sprintf("/%v", flags.OptionInrWss) case flags.CheckAdmin: // Admin Wss wss = fmt.Sprintf("/%v", flags.AdminWss) case flags.CheckAdminBlk: // admin Blk Wss wss = fmt.Sprintf("/%v", flags.AdminBlkWss) default: applogger.Error(flags.ErrOrderSeven.Error()) } routerQuotes.HandleFunc(wss, socket.WsHandlerOrder) // http 订单静态服务 srv := http.NewServer(opts...) order.RegisterOrderHTTPServer(srv, s) // OrderPre virtually.RegisterSecondHTTPServer(srv, s) // Second virtually.RegisterSpotsHTTPServer(srv, s) // Spots virtually.RegisterContractHTTPServer(srv, s) // Contract forex.RegisterForexHTTPServer(srv, s) // Forex money.RegisterMoneyHTTPServer(srv, s) // Money backend.RegisterBackendHTTPServer(srv, s) // Backend share.RegisterShareUsHTTPServer(srv, s) // Us share.RegisterShareThaHTTPServer(srv, s) // Tha share.RegisterShareIdnHTTPServer(srv, s) // Idn share.RegisterShareInrHTTPServer(srv, s) // Inr share.RegisterShareMysHTTPServer(srv, s) // Mys share.RegisterShareSgdHTTPServer(srv, s) // Sgd share.RegisterShareGbxHTTPServer(srv, s) // Gbx share.RegisterShareHkdHTTPServer(srv, s) // Hkd share.RegisterShareEurHTTPServer(srv, s) // Eur share.RegisterShareFurHTTPServer(srv, s) // Fur share.RegisterShareJpyHTTPServer(srv, s) // Jpy share.RegisterShareBrlHTTPServer(srv, s) // Brl block.RegisterBlockTradeHTTPServer(srv, s) // Block stock option.RegisterOptionInrHTTPServer(srv, s) // OptionInr srv.HandlePrefix("/", routerQuotes) return srv }