package api import ( "github.com/gin-gonic/gin" "net/http" "wss-pool/pkg/processor" ) // 处理跨域 func Core() gin.HandlerFunc { return func(c *gin.Context) { method := c.Request.Method c.Header("Access-Control-Allow-Origin", "*") c.Header("Access-Control-Allow-Headers", "Content-Type,AccessToken,X-CSRF-Token,Authorization,Token") c.Header("Access-Control-Allow-Methods", "POST,GET,OPTIONS") c.Header("Access-Control-Expose-Headers", "Content-Length,Access-Control-Allow-Origin,Access-Control-Allow-Headers,Content-Type") c.Header("Access-Control-Allow-Credentials", "True") // Release Index Options if method == "OPTIONS" { c.AbortWithStatus(http.StatusNoContent) } // Process Request c.Next() } } // 数据API服务路由 func RouterApiServer(project string) *gin.Engine { routers := gin.Default() routers.Use(Core()) router := routers.Group("/") // excel 导出 router.GET("/spots/excel", processor.SymbolToExcel) router.GET("/spots/excel/forex", processor.ExcelToForexCode) router.GET("/spots/excel/japan", processor.ExcelToSymbolByJapanJson) router.GET("/spots/excel/japanJson", processor.ExcelToSymbolByJapan) // 现货数据API服务 router.GET("/main/list", processor.MainSpotList) router.GET("/main/free-list", processor.MainFreeSpotList) router.GET("/spots/kline", processor.SpotsKline) router.GET("/spots/merged", processor.SpotsMerged) router.GET("/spots/tickers", processor.SpotsTickers) router.GET("/spots/trade", processor.SpotsTrade) router.GET("/spots/intro", processor.IntroList) router.GET("/spots/img/visit", processor.Visit) router.GET("/spots/detail", processor.SpotsDetail) router.GET("/spots/history/trade", processor.SpotsHistoryTrade) router.GET("/spots/depth", processor.SpotsDepth) router.GET("/spots/merged/list", processor.SpotsMergedList) router.GET("/spots/index/list", processor.ExchangeSymbolIndexList) router.GET("/spots/index/info", processor.StockIndexInfo) router.GET("/spots/index/kline/list", processor.StockIndexKLineList) // 合约数据API服务 router.GET("/contract/bbo", processor.ContractBbo) router.GET("/contract/history/kline", processor.ContractHistoryKline) router.GET("/contract/history/price_kline", processor.ContractHistoryPriceKline) router.GET("/contract/batch_merged", processor.ContractBatchMerged) router.GET("/contract/trade", processor.ContractTrade) router.GET("/contract/swap_his_open_interest", processor.ContractsWapHisOpenInterest) router.GET("/contract/history/linear_swap_premium_index_kline", processor.ContractHistoryLinearSwapPremiumIndexKline) router.GET("/contract/history/linear_swap_estimated_rate_kline", processor.ContractHistoryLinearSwapEstimatedRateKline) router.GET("/contract/history/linear_swap_basis", processor.ContractHistoryLinearSwapBasis) router.GET("/contract/merged/list", processor.ContractMergedList) router.GET("/contract/merged", processor.ContractMerged) router.GET("/contract/depth", processor.ContractDepth) router.GET("/contract/history/trade", processor.ContractHistoryTrade) router.POST("/encryption/spots/news/add", processor.StockNewAdd) // 股票基本信息查询 router.GET("share/fundamentals", processor.Fundamentals) router.GET("share/fundamentals_new", processor.FundamentalsNew) router.GET("share/eod", processor.Eod) router.GET("share/get-list-optional-stock", processor.FindShareBySymbol) router.GET("share/intradiscal", processor.IntraDisCal) router.GET("share/exchange-symbol-list", processor.ExchangeSymbolList) router.GET("share/exchange-free-symbol-list", processor.ExchangeFreeSymbolList) router.GET("share/intraday", processor.Intraday) router.GET("/spots/news/list", processor.StockNewsList) router.GET("/spots/kline/list", processor.StockKLineList) router.GET("/spots/southAsia/info", processor.StockSouthAsiaInfo) router.GET("/spots/us/info", processor.StockUsInfo) router.GET("/spots/kline/us/list", processor.StockKLineUsList) router.GET("/spots/ticker_to_excel", processor.TickerToExcel) router.POST("/spots/update/img", processor.UpdateImg) router.POST("/spots/update/keep", processor.UpdateKeepDecimal) router.POST("/spots/list/new/add", processor.StockListAddToPHP) router.POST("/spots/php/update", processor.StockListUpdateToPHP) router.POST("/spots/index/list/new/add", processor.StockIndexListUpdateToPHP) // 美股股票静态数据查询 router.GET("/market/grouped", processor.Grouped) router.GET("/market/trades", processor.Trades) router.GET("/market/last-trade", processor.LastTrade) router.GET("/market/quotes", processor.Quotes) router.GET("/market/last-quote", processor.LastQuote) router.GET("/market/snapshot-all-tickers", processor.SnapshotAllTickers) router.GET("/market/snapshot-gainers-losers", processor.SnapshotGainersLosers) router.GET("/market/snapshot-one-ticker", processor.SnapshotOneTicker) router.GET("/market/reference-ticker", processor.ReferenceTicker) router.GET("/market/contract-price-kline", processor.ContractPriceKLineList) router.GET("/market/history-us", processor.HistoryUsList) router.GET("/market/inquiry/price", processor.InquiryPrice) router.GET("/market/spot-kline", processor.SpotKLineList) router.GET("/market/contract-kline", processor.ContractKLineList) router.GET("/market/reference-ticker-details", processor.ReferenceTickerDetails) router.GET("/market/aggregates", processor.Aggregates) router.GET("/market/open-close", processor.OpenClose) router.GET("/market/previous-close", processor.PreviousClose) router.GET("/market/reference-ticker-news", processor.ReferenceTickerNews) router.POST("/market/msg", processor.MsgSend) router.POST("/market/mobilelogin", processor.MobileLogin) router.POST("/market/phonenumberbypassword", processor.PhoneNumberByPassWord) router.POST("/market/registration", processor.Registration) router.POST("/market/forgetpasswore", processor.ForgetPassWore) router.POST("/market/setphonenumber", processor.SetPhoneNumber) // 期权数据API服务 router.GET("/option/list", processor.ExchangeOptionList) router.GET("/option/info", processor.OptionInfo) router.GET("/option/php/list", processor.OptionPHPList) router.GET("/option/excel", processor.OptionToExcel) // 外汇数据API服务 router.GET("/forex/kline", processor.ForexAggregates) router.GET("/forex/tickers/list", processor.ForexAllTickers) router.GET("/forex/ticker", processor.ForexTicker) router.GET("/forex/previous_close", processor.ForexPreviousClose) router.GET("/forex/grouped_daily", processor.ForexGroupedDaily) router.GET("/forex/ticker_search_list", processor.ForexSymbolList) router.GET("/forex/ticker_free_list", processor.ForexFreeSymbolList) router.GET("/forex/quotes_bbo", processor.ForexQuotesBBO) router.GET("/forex/last_quote_bbo", processor.ForexLastQuote) router.GET("/forex/real_time_currency", processor.ForexRealTimeCurrency) // 新版外汇API服务 router.GET("/forex/ticker_new_search_list", processor.ForexSymbolListNew) router.GET("/forex/ticker_new_free_list", processor.ForexFreeSymbolListNew) router.GET("/forex/kline_history", processor.ForexAggregatesNewGet) router.GET("/forex/trade_tick_list", processor.ForexTradeList) router.POST("/forex/depth_tick", processor.ForexAggregatesDepthTick) router.POST("/forex/trade_tick", processor.ForexAggregatesTradeTick) router.POST("/forex/kline_new", processor.ForexAggregatesNewPost) router.POST("/forex/spots/news/add", processor.StockNewAdd) return routers } // 指数股票API服务 func RouterStockIndexApiServer() *gin.Engine { router := gin.Default() router.Use(Core()) group := router.Group("/stockIndex") { group.POST("/new/add", processor.StockIndexInfoAdd) group.POST("/list/add", processor.StockIndexListAdd) group.POST("/info/add", processor.StockIndexInfoMon) group.POST("/list/update", processor.StockIndexListUpdate) group.GET("/list/get", processor.StockIndexListGet) group.POST("/spots/news/add", processor.StockNewAdd) } return router } // 印度期权股票API服务 func RouterIndiaOptionApiServer() *gin.Engine { router := gin.Default() router.Use(Core()) group := router.Group("/indiaOption") { group.POST("/info/add", processor.OptionInfoAdd) group.POST("/list/add", processor.OptionListAdd) } return router } // 美股股票API服务 func RouterUSApiServer() *gin.Engine { router := gin.Default() router.Use(Core()) group := router.Group("/us") { group.POST("/message/add", processor.UsMessage) } return router } // 印尼股票API服务 func RouterIndonesiaApiServer() *gin.Engine { router := gin.Default() router.Use(Core()) group := router.Group("/indonesia") { group.POST("/spots/new/add", processor.StockInfoAdd) group.POST("/spots/list/add", processor.StockListAdd) group.POST("/spots/info/add", processor.StockInfoMon) group.POST("/spots/list/update", processor.StockListUpdate) group.GET("/spots/list/get", processor.StockListGet) group.POST("/spots/news/add", processor.StockNewAdd) } return router } // 泰国股票API服务 func RouterThailandApiServer() *gin.Engine { router := gin.Default() router.Use(Core()) group := router.Group("/thailand") { group.POST("/spots/new/add", processor.StockInfoAdd) group.POST("/spots/list/add", processor.StockListAdd) group.POST("/spots/info/add", processor.StockInfoMon) group.POST("/spots/list/update", processor.StockListUpdate) group.GET("/spots/list/get", processor.StockListGet) group.POST("/spots/news/add", processor.StockNewAdd) } return router } // 印度股票API服务 func RouterIndiaApiServer() *gin.Engine { router := gin.Default() router.Use(Core()) group := router.Group("/india") { group.POST("/spots/new/add", processor.StockInfoAdd) group.POST("/spots/list/add", processor.StockListAdd) group.POST("/spots/info/add", processor.StockInfoMon) group.POST("/spots/list/update", processor.StockListUpdate) group.GET("/spots/list/get", processor.StockListGet) group.POST("/spots/news/add", processor.StockNewAdd) } return router } // 马来西亚股票API服务 func RouterMalaysiaApiServer() *gin.Engine { router := gin.Default() router.Use(Core()) group := router.Group("/malaysia") { group.POST("/spots/new/add", processor.StockInfoAdd) group.POST("/spots/list/add", processor.StockListAdd) group.POST("/spots/info/add", processor.StockInfoMon) group.POST("/spots/list/update", processor.StockListUpdate) group.GET("/spots/list/get", processor.StockListGet) group.POST("/spots/news/add", processor.StockNewAdd) } return router } // 新加坡股票API服务 func RouterSingaporeApiServer() *gin.Engine { router := gin.Default() router.Use(Core()) group := router.Group("/singapore") { group.POST("/spots/new/add", processor.StockInfoAdd) group.POST("/spots/list/add", processor.StockListAdd) group.POST("/spots/info/add", processor.StockInfoMon) group.POST("/spots/list/update", processor.StockListUpdate) group.GET("/spots/list/get", processor.StockListGet) group.POST("/spots/news/add", processor.StockNewAdd) } return router } // 港股股票API服务 func RouterHongKongApiServer() *gin.Engine { router := gin.Default() router.Use(Core()) group := router.Group("/hongkong") { group.POST("/spots/new/add", processor.StockInfoAdd) group.POST("/spots/list/add", processor.StockListAdd) group.POST("/spots/info/add", processor.StockInfoMon) group.POST("/spots/list/update", processor.StockListUpdate) group.GET("/spots/list/get", processor.StockListGet) group.POST("/spots/news/add", processor.StockNewAdd) } return router } // 英国股票API服务 func RouterUKApiServer() *gin.Engine { router := gin.Default() router.Use(Core()) group := router.Group("/uk") { group.POST("/spots/new/add", processor.StockInfoAdd) group.POST("/spots/list/add", processor.StockListAdd) group.POST("/spots/info/add", processor.StockInfoMon) group.POST("/spots/list/update", processor.StockListUpdate) group.GET("/spots/list/get", processor.StockListGet) group.POST("/spots/news/add", processor.StockNewAdd) } return router } // 法国股票API服务 func RouterFranceApiServer() *gin.Engine { router := gin.Default() router.Use(Core()) group := router.Group("/france") { group.POST("/spots/new/add", processor.StockInfoAdd) group.POST("/spots/list/add", processor.StockListAdd) group.POST("/spots/info/add", processor.StockInfoMon) group.POST("/spots/list/update", processor.StockListUpdate) group.GET("/spots/list/get", processor.StockListGet) group.POST("/spots/news/add", processor.StockNewAdd) } return router } // 德国股票API服务 func RouterGermanyApiServer() *gin.Engine { router := gin.Default() router.Use(Core()) group := router.Group("/germany") { group.POST("/spots/new/add", processor.StockInfoAdd) group.POST("/spots/list/add", processor.StockListAdd) group.POST("/spots/info/add", processor.StockInfoMon) group.POST("/spots/list/update", processor.StockListUpdate) group.GET("/spots/list/get", processor.StockListGet) group.POST("/spots/news/add", processor.StockNewAdd) } return router } // 巴西股票API服务 func RouterBrazilApiServer() *gin.Engine { router := gin.Default() router.Use(Core()) group := router.Group("/brazil") { group.POST("/spots/new/add", processor.StockInfoAdd) group.POST("/spots/list/add", processor.StockListAdd) group.POST("/spots/info/add", processor.StockInfoMon) group.POST("/spots/list/update", processor.StockListUpdate) group.GET("/spots/list/get", processor.StockListGet) group.POST("/spots/news/add", processor.StockNewAdd) } return router } // 日本股票API服务 func RouterJapanApiServer() *gin.Engine { router := gin.Default() router.Use(Core()) group := router.Group("/japan") { group.POST("/spots/new/add", processor.StockInfoAdd) group.POST("/spots/list/add", processor.StockListAdd) group.POST("/spots/info/add", processor.StockInfoMon) group.POST("/spots/list/update", processor.StockListUpdate) group.GET("/spots/list/get", processor.StockListGet) group.POST("/spots/news/add", processor.StockNewAdd) } return router }