213 lines
6.9 KiB
Go
Executable File
213 lines
6.9 KiB
Go
Executable File
package onexbet
|
||
|
||
//"time"
|
||
|
||
type OnexbetSport int
|
||
|
||
const (
|
||
Football OnexbetSport = 1
|
||
Handball OnexbetSport = 8
|
||
Tennis OnexbetSport = 4
|
||
|
||
defaultPartnerID = "25"
|
||
|
||
liveSportURLPattern = "https://ua-1x-bet.com/LiveFeed/Get1x2_VZip?sports=%d&count=100&lng=en&mode=4&country=2&partner=25&getEmpty=true"
|
||
|
||
// Все лайв матчи
|
||
liveURL = "https://ua-1x-bet.com/en/live/"
|
||
|
||
// https://ua-1x-bet.com/LiveFeed/GetGameZip?id=241215601&lng=en&cfview=0&isSubGames=true&GroupEvents=true&allEventsGroupSubGames=true&countevents=250&partner=25&marketType=1
|
||
liveMatchURLPattern = "https://ua-1x-bet.com/LiveFeed/GetGameZip?id=%s&lng=en&cfview=0&isSubGames=true&GroupEvents=true&allEventsGroupSubGames=true&countevents=250&partner=25&marketType=1"
|
||
|
||
// Параметр - это поле SGI из LiveMatchURL
|
||
// Старый URL
|
||
//matchStatsURLPattern = "https://ua-1x-bet.com/SiteService/StatByStatGameId2?id=%s&ln=en&cfview=0"
|
||
|
||
// id, тот же что и для liveMatchURLPattern
|
||
//liveMatchChronoPattern = "https://ua-1x-bet.com/LiveFeed/GetChronoOfPlay?id=%s&lng=en"
|
||
|
||
// gameId имеет вид "5d5447addc49007c51bd9359". Узнать можно из поля "SGI" в JSON по ссылке liveMatchURLPattern
|
||
//liveMatchLineupsPattern = "https://ua-1x-bet.com/en/SiteService/LineUps?gameId=%s&ln=en"
|
||
|
||
// https://ua-1x-bet.com/LiveFeed/Web_SearchZip?text=leeds+united&limit=50&lng=en&mode=4&partner=25
|
||
stdLiveSearchURL = "https://ua-1x-bet.com/LiveFeed/Web_SearchZip"
|
||
|
||
// https://ua-1x-bet.com/LineFeed/Web_SearchZip?text=leeds+united&limit=50&lng=en&mode=4&partner=25
|
||
stdLineSearchURL = "https://ua-1x-bet.com/LineFeed/Web_SearchZip"
|
||
|
||
tennisLiveSearchURL = "https://lite.ua-1x-bet.com/service-api/LiveFeed/Web_SearchZip"
|
||
tennisLineSearchURL = "https://lite.ua-1x-bet.com/service-api/LineFeed/Web_SearchZip"
|
||
|
||
//https://ua-1x-bet.com/SiteService/Game?gameId=60f319a7f75a663f692dc28b&ln=en&partner=25&geo=2
|
||
matchStatsURLPattern = "https://ua-1x-bet.com/SiteService/Game?gameId=%s&ln=en&partner=25&geo=1"
|
||
|
||
// Mon Jan 2 15:04:05 -0700 MST 2006
|
||
startDateLayout = "2006-01-02T15:04:05-07:00"
|
||
|
||
tennisMarketWinner = 1
|
||
tennisMarketTotal = 17
|
||
tennisMarketHandicap = 2
|
||
|
||
teamMarketWinner3Way = 1
|
||
teamMarketTotal = 17
|
||
teamMarketIndividualTotal1 = 15
|
||
teamMarketIndividualTotal2 = 62
|
||
|
||
// Websocket message types
|
||
WsMsgLiveMatches = "liveMatches"
|
||
WsMsgTeamLiveMatchData = "teamLiveMatchData"
|
||
WsMsgTennisLiveMatchData = "tennisLiveMatchData"
|
||
|
||
StatusMatchCompleted = 3
|
||
StatusMatchInplay = 2
|
||
StatusMatchWaiting = 1
|
||
|
||
TopicLive = "live"
|
||
)
|
||
|
||
type WatchReq struct {
|
||
SportID OnexbetSport
|
||
MatchID string
|
||
}
|
||
|
||
type LiveMatch struct {
|
||
MatchID string `json:"matchID"`
|
||
SportName string `json:"sportName"`
|
||
ChampName string `json:"champName"`
|
||
URL string `json:"url"`
|
||
Home string `json:"home"`
|
||
Away string `json:"away"`
|
||
StartTime int64 `json:"startTime"`
|
||
StatsMatchID string `json:"statsMatchID"`
|
||
Score Score `json:"score"`
|
||
ScoreByPeriods map[int]Score `json:"scoreByPeriods"`
|
||
CurrentPeriod int `json:"currentPeriod"`
|
||
}
|
||
|
||
type Score struct {
|
||
Home int `json:"home"`
|
||
Away int `json:"away"`
|
||
}
|
||
|
||
type Period struct {
|
||
PeriodNumber int `json:"periodNumber"` // 1 - 5
|
||
Total Total `json:"total"`
|
||
Handicap Handicap `json:"handicap"`
|
||
}
|
||
|
||
/*
|
||
type TennisLiveMatchData struct {
|
||
MatchID string `json:"matchID"`
|
||
Winner *Winner2Way `json:"winner"`
|
||
Total Total `json:"total"`
|
||
Sets []TennisSet `json:"sets"`
|
||
// Текущий сет
|
||
CurrentSetNumber int `json:"currentSetNumber"`
|
||
// Счет по сетам, например 1-0 или 2-1
|
||
SetScore Score `json:"setScore"`
|
||
// ключ - номер сета, значение - счет по геймам внутри сета
|
||
GameScore map[int]Score `json:"gameScore"`
|
||
}
|
||
*/
|
||
|
||
type TeamLiveMatchData struct {
|
||
MatchID string `json:"matchID"`
|
||
HomeAttacks int `json:"homeAttacks"`
|
||
HomeDangerousAttacks int `json:"homeDangerousAttacks"`
|
||
HomeShotsOnTarget int `json:"homeShotsOnTarget"`
|
||
HomeShotsOffTarget int `json:"homeShotsOffTarget"`
|
||
AwayAttacks int `json:"awayAttacks"`
|
||
AwayDangerousAttacks int `json:"awayDangerousAttacks"`
|
||
AwayShotsOnTarget int `json:"awayShotsOnTarget"`
|
||
AwayShotsOffTarget int `json:"awayShotsOffTarget"`
|
||
CurrentTime int `json:"currentTime"`
|
||
HomeGoals int `json:"homeGoals"`
|
||
AwayGoals int `json:"awayGoals"`
|
||
Winner *Winner3Way `json:"winner"`
|
||
Total Total `json:"total"`
|
||
Handicap Handicap `json:"handicap"`
|
||
IndividualTotalHome Total `json:"individualTotalHome"`
|
||
IndividualTotalAway Total `json:"individualTotalAway"`
|
||
H1 Half `json:"h1"` // 1st half
|
||
// tennis
|
||
Winner2Way *Winner2Way `json:"winner2way"`
|
||
|
||
// score
|
||
Score Score `json:"score"`
|
||
ScoreByPeriods map[int]Score `json:"scoreByPeriods"`
|
||
CurrentPeriod int `json:"currentPeriod"`
|
||
Periods map[int]Period `json:"periods"`
|
||
}
|
||
|
||
// Бывают матчи, где перестают принимать ставки на один из исходов. Поэтому нужен флаг
|
||
type Winner2Way struct {
|
||
HasHome bool `json:"hasHome"`
|
||
Home float64 `json:"home"`
|
||
HasAway bool `json:"hasAway"`
|
||
Away float64 `json:"away"`
|
||
}
|
||
|
||
type Winner3Way struct {
|
||
Home float64 `json:"home"`
|
||
Draw float64 `json:"draw"`
|
||
Away float64 `json:"away"`
|
||
}
|
||
|
||
type Half struct {
|
||
Total Total `json:"total"`
|
||
IndividualTotalHome Total `json:"individualTotalHome"`
|
||
IndividualTotalAway Total `json:"individualTotalAway"`
|
||
}
|
||
|
||
type Total struct {
|
||
Over []ParamOffer `json:"over"`
|
||
Under []ParamOffer `json:"under"`
|
||
}
|
||
|
||
type Handicap struct {
|
||
Home []ParamOffer `json:"home"`
|
||
Away []ParamOffer `json:"away"`
|
||
}
|
||
|
||
type ParamOffer struct {
|
||
Price float64 `json:"price"`
|
||
Param string `json:"param"`
|
||
ParamFloat float64 `json:"paramFloat"`
|
||
}
|
||
|
||
type LiveMatchesMessage struct {
|
||
SportID OnexbetSport `json:"sportID"`
|
||
Matches []LiveMatch `json:"matches"`
|
||
Watching []string `json:"watching"`
|
||
}
|
||
|
||
/*
|
||
type LiveMatchesUpdateMessage struct {
|
||
RemovedMatchIDs []string `json:"removedMatchIDs"`
|
||
AddedMatches []LiveMatch `json:"addedMatches"`
|
||
}
|
||
|
||
|
||
*/
|
||
|
||
type MatchCandidate struct {
|
||
Sport string `json:"sport"`
|
||
ChampName string `json:"champName"`
|
||
Home string `json:"home"`
|
||
Away string `json:"away"`
|
||
StartTime int64 `json:"startTime"`
|
||
MatchID string `json:"matchID"`
|
||
}
|
||
|
||
type PeriodScore struct {
|
||
HomePoints int `json:"homePoints"`
|
||
AwayPoints int `json:"awayPoints"`
|
||
}
|
||
|
||
type TeamMatchResult struct {
|
||
Status int `json:"status"`
|
||
HomePoints int `json:"homePoints"`
|
||
AwayPoints int `json:"awayPoints"`
|
||
ScoreByPeriods map[int]PeriodScore
|
||
}
|