1st
This commit is contained in:
174
cmd/main.go
Executable file
174
cmd/main.go
Executable file
@@ -0,0 +1,174 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"log"
|
||||
"os"
|
||||
"os/signal"
|
||||
"syscall"
|
||||
"time"
|
||||
|
||||
"gordenko.dev/dima/flashscore"
|
||||
fsmodel "gordenko.dev/dima/flashscore/model"
|
||||
"gordenko.dev/dima/qx"
|
||||
"gordenko.dev/dima/tipper/daemon"
|
||||
"gordenko.dev/dima/tipper/model"
|
||||
"gordenko.dev/dima/web"
|
||||
"gordenko.dev/dima/web/api"
|
||||
"gordenko.dev/dima/web/router"
|
||||
"gordenko.dev/dima/ws"
|
||||
|
||||
_ "github.com/go-sql-driver/mysql"
|
||||
)
|
||||
|
||||
const (
|
||||
port = 33465
|
||||
baseDir = "/home/ubuntu/ht"
|
||||
dsn = "user:password@/tipper"
|
||||
)
|
||||
|
||||
func main() {
|
||||
logger := log.New(os.Stdout, "", log.LstdFlags)
|
||||
|
||||
db, err := qx.Open("mysql", dsn)
|
||||
if err != nil {
|
||||
log.Fatalf("qx.Open: %s\n", err)
|
||||
}
|
||||
defer db.Close()
|
||||
|
||||
tipperModel := model.New(db)
|
||||
flashscoreModel := fsmodel.New(db)
|
||||
|
||||
wsServer, err := ws.NewPublicServer(ws.PublicServerOptions{
|
||||
Logger: log.New(os.Stdout, "ws: ", log.LstdFlags),
|
||||
LostConnectionTimeout: time.Duration(60*60*24) * time.Second,
|
||||
})
|
||||
if err != nil {
|
||||
log.Fatalf("ws.NewPublicServer: %s\n", err)
|
||||
}
|
||||
|
||||
d, err := daemon.New(daemon.Options{
|
||||
Logger: logger,
|
||||
FlashscoreAPIAddr: "http://localhost:7767/api",
|
||||
OnexbetWsURL: "ws://localhost:7772/ws",
|
||||
OnexbetAPIURL: "http://localhost:7772/api",
|
||||
FlashscoreModel: flashscoreModel,
|
||||
TipperModel: tipperModel,
|
||||
SportIDs: []int{
|
||||
flashscore.Football,
|
||||
flashscore.Handball,
|
||||
flashscore.Tennis,
|
||||
},
|
||||
})
|
||||
if err != nil {
|
||||
log.Fatalf("daemon.New: %s\n", err)
|
||||
}
|
||||
|
||||
publicAPI, err := api.NewAPI(api.Options{
|
||||
Logger: log.New(os.Stdout, "api: ", log.LstdFlags),
|
||||
})
|
||||
if err != nil {
|
||||
log.Fatalf("api.NewAPI: %s\n", err)
|
||||
}
|
||||
|
||||
publicAPI.PublicFunc("setTipResult", d.SetTipResultManual)
|
||||
publicAPI.PublicFunc("listSportTips", d.ListSportTips)
|
||||
publicAPI.PublicFunc("listTeamZones", flashscoreModel.ListTeamZones)
|
||||
publicAPI.PublicFunc("listTeamsByZone", flashscoreModel.ListTeamsByZone)
|
||||
publicAPI.PublicFunc("listTeamAliases", flashscoreModel.ListTeamAliases)
|
||||
publicAPI.PublicFunc("addTeamAlias", flashscoreModel.AddTeamAlias)
|
||||
publicAPI.PublicFunc("removeTeamAlias", flashscoreModel.RemoveTeamAlias)
|
||||
|
||||
publicAPI.PublicFunc("listStrategies", tipperModel.ListStrategies)
|
||||
publicAPI.PublicFunc("listStrategyRatedChampStats", tipperModel.ListStrategyRatedChampStats)
|
||||
publicAPI.PublicFunc("getStrategyRatedHistory", tipperModel.GetStrategyRatedHistory)
|
||||
|
||||
publicAPI.PublicFunc("listStrategiesReports", tipperModel.ListStrategiesReports)
|
||||
publicAPI.PublicFunc("listStrategies", tipperModel.ListStrategies)
|
||||
publicAPI.PublicFunc("listStrategyChampStats", tipperModel.ListStrategyChampStats)
|
||||
publicAPI.PublicFunc("getStrategyHistory", tipperModel.GetStrategyHistory)
|
||||
publicAPI.PublicFunc("getSportRatedReport", tipperModel.GetSportRatedReport)
|
||||
|
||||
publicAPI.PublicFunc("searchMatchCandidates", d.SearchMatchCandidates)
|
||||
publicAPI.PublicFunc("searchMatchCandidatesByTeamName", d.SearchMatchCandidatesByTeamName)
|
||||
publicAPI.PublicFunc("addTeamsAliases", d.AddTeamsAliases)
|
||||
|
||||
r := router.New()
|
||||
r.HandleFunc("/football", pageFootball)
|
||||
r.HandleFunc("/handball", pageHandball)
|
||||
r.HandleFunc("/tennis", pageTennis)
|
||||
r.HandleFunc("/football-by-days", d.PageFootballByDays)
|
||||
r.HandleFunc("/handball-by-days", d.PageHandballByDays)
|
||||
r.HandleFunc("/tennis-by-days", d.PageTennisByDays)
|
||||
r.HandleFunc("/aliases", pageAliases)
|
||||
r.HandleFunc("/stats", pageStats)
|
||||
r.HandleFunc("/matches", d.PageMatches)
|
||||
//r.HandleFunc("/watch", d.PageWatch)
|
||||
//r.HandleFunc("/unwatch", d.PageUnwatch)
|
||||
r.HandleFunc("/listRatedChamps", d.ListRatedChamps)
|
||||
r.HandleFunc("/", pageIndex)
|
||||
r.HandleFunc("/best-strategies", pageStrategies)
|
||||
//
|
||||
r.Handle("/api", publicAPI)
|
||||
r.Handle("/ws", wsServer)
|
||||
|
||||
app, err := web.NewApp(web.AppOptions{
|
||||
Port: port,
|
||||
Router: r,
|
||||
BaseDir: baseDir,
|
||||
TemplateDir: "templates",
|
||||
StaticDirs: map[string]string{
|
||||
"static": "static",
|
||||
},
|
||||
})
|
||||
if err != nil {
|
||||
log.Fatalf("web.NewApp: %s\n", err)
|
||||
}
|
||||
|
||||
go app.Run()
|
||||
go d.Run()
|
||||
|
||||
sigs := make(chan os.Signal, 1)
|
||||
signal.Notify(sigs, syscall.SIGINT, syscall.SIGTERM)
|
||||
|
||||
<-sigs
|
||||
|
||||
logger.Println("daemon stopped.")
|
||||
}
|
||||
|
||||
/*
|
||||
var topChamps = map[string]bool{
|
||||
"/england/premier-league": true,
|
||||
"/germany/bundesliga": true,
|
||||
"/italy/serie-a": true,
|
||||
"/spain/laliga": true,
|
||||
"/portugal/primeira-liga": true,
|
||||
"/switzerland/super-league": true,
|
||||
"/turkey/super-lig": true,
|
||||
"/faroe-islands/premier-league": true,
|
||||
"/usa/mls": true,
|
||||
}
|
||||
|
||||
// Топ чемпы
|
||||
var myIgnoreChamps = map[string]bool{
|
||||
"/england/premier-league": true,
|
||||
"/germany/bundesliga": true,
|
||||
"/spain/laliga": true,
|
||||
"/portugal/primeira-liga": true,
|
||||
"/switzerland/super-league": true,
|
||||
"/turkey/super-lig": true,
|
||||
//"/faroe-islands/premier-league": true,
|
||||
"/usa/mls": true,
|
||||
}
|
||||
|
||||
func acceptedChamps(champs map[string]bool) func(string) bool {
|
||||
return func(champID string) bool {
|
||||
return champs[champID]
|
||||
}
|
||||
}
|
||||
|
||||
func nonAcceptedChamps(champs map[string]bool) func(string) bool {
|
||||
return func(champID string) bool {
|
||||
return !champs[champID]
|
||||
}
|
||||
}
|
||||
*/
|
||||
Reference in New Issue
Block a user