updated slapapi
This commit is contained in:
158
pkg/slapshotapi/types.go
Normal file
158
pkg/slapshotapi/types.go
Normal file
@@ -0,0 +1,158 @@
|
||||
package slapshotapi
|
||||
|
||||
// Score represents the score for both teams in a match
|
||||
type Score struct {
|
||||
Home int `json:"home"`
|
||||
Away int `json:"away"`
|
||||
}
|
||||
|
||||
// PlayerStats contains all possible player statistics from a match.
|
||||
// Fields use pointers because not every stat is present in every match response.
|
||||
type PlayerStats struct {
|
||||
Goals *float64 `json:"goals,omitempty"`
|
||||
Assists *float64 `json:"assists,omitempty"`
|
||||
PrimaryAssists *float64 `json:"primary_assists,omitempty"`
|
||||
SecondaryAssists *float64 `json:"secondary_assists,omitempty"`
|
||||
Saves *float64 `json:"saves,omitempty"`
|
||||
Blocks *float64 `json:"blocks,omitempty"`
|
||||
Shots *float64 `json:"shots,omitempty"`
|
||||
Turnovers *float64 `json:"turnovers,omitempty"`
|
||||
Takeaways *float64 `json:"takeaways,omitempty"`
|
||||
Passes *float64 `json:"passes,omitempty"`
|
||||
PossessionTime *float64 `json:"possession_time_sec,omitempty"`
|
||||
FaceoffsWon *float64 `json:"faceoffs_won,omitempty"`
|
||||
FaceoffsLost *float64 `json:"faceoffs_lost,omitempty"`
|
||||
PostHits *float64 `json:"post_hits,omitempty"`
|
||||
OvertimeGoals *float64 `json:"overtime_goals,omitempty"`
|
||||
GameWinningGoals *float64 `json:"game_winning_goals,omitempty"`
|
||||
Score *float64 `json:"score,omitempty"`
|
||||
ContributedGoals *float64 `json:"contributed_goals,omitempty"`
|
||||
ConcededGoals *float64 `json:"conceded_goals,omitempty"`
|
||||
GamesPlayed *float64 `json:"games_played,omitempty"`
|
||||
Wins *float64 `json:"wins,omitempty"`
|
||||
Losses *float64 `json:"losses,omitempty"`
|
||||
OvertimeWins *float64 `json:"overtime_wins,omitempty"`
|
||||
OvertimeLosses *float64 `json:"overtime_losses,omitempty"`
|
||||
Ties *float64 `json:"ties,omitempty"`
|
||||
Shutouts *float64 `json:"shutouts,omitempty"`
|
||||
ShutsAgainst *float64 `json:"shutouts_against,omitempty"`
|
||||
HasMercyRuled *float64 `json:"has_mercy_ruled,omitempty"`
|
||||
WasMercyRuled *float64 `json:"was_mercy_ruled,omitempty"`
|
||||
PeriodsPlayed *float64 `json:"periods_played,omitempty"`
|
||||
}
|
||||
|
||||
// Player represents a single player's data in a match
|
||||
type Player struct {
|
||||
GameUserID string `json:"game_user_id"`
|
||||
Team string `json:"team"`
|
||||
Username string `json:"username"`
|
||||
Stats PlayerStats `json:"stats"`
|
||||
}
|
||||
|
||||
// GameStats contains the in-game statistics and settings for a match.
|
||||
// This is the core match data returned both by the API and in local match logs.
|
||||
type GameStats struct {
|
||||
Type string `json:"type"`
|
||||
Arena string `json:"arena"`
|
||||
Score Score `json:"score"`
|
||||
Winner string `json:"winner"`
|
||||
EndReason string `json:"end_reason"`
|
||||
MatchLength string `json:"match_length"`
|
||||
PeriodsEnabled string `json:"periods_enabled"`
|
||||
CurrentPeriod string `json:"current_period"`
|
||||
CustomMercyRule string `json:"custom_mercy_rule"`
|
||||
Players []Player `json:"players"`
|
||||
}
|
||||
|
||||
// Game represents a full match as returned by the API /games/{id} endpoint
|
||||
type Game struct {
|
||||
ID string `json:"id"`
|
||||
Region string `json:"region"`
|
||||
MatchType string `json:"match_type"`
|
||||
Gamemode string `json:"gamemode"`
|
||||
Created string `json:"created"`
|
||||
GameStats GameStats `json:"game_stats"`
|
||||
}
|
||||
|
||||
// LobbyPlayer represents a player in a lobby
|
||||
type LobbyPlayer struct {
|
||||
ID int `json:"id"`
|
||||
Username string `json:"username"`
|
||||
}
|
||||
|
||||
// LobbyTeams represents the team assignments in a lobby
|
||||
type LobbyTeams struct {
|
||||
Home []LobbyPlayer `json:"home"`
|
||||
Away []LobbyPlayer `json:"away"`
|
||||
Spectators []LobbyPlayer `json:"spectators"`
|
||||
}
|
||||
|
||||
// Lobby represents a custom lobby as returned by the API
|
||||
type Lobby struct {
|
||||
UUID string `json:"uuid"`
|
||||
Region string `json:"region"`
|
||||
Name string `json:"name"`
|
||||
HasPassword bool `json:"has_password"`
|
||||
Owner int `json:"owner"`
|
||||
OwnerName string `json:"owner_name"`
|
||||
PlayerCount int `json:"player_count"`
|
||||
MaxPlayers int `json:"max_players"`
|
||||
InGame bool `json:"in_game"`
|
||||
Players LobbyTeams `json:"players"`
|
||||
MercyRule int `json:"mercy_rule"`
|
||||
Arena string `json:"arena"`
|
||||
PeriodsEnabled bool `json:"periods_enabled"`
|
||||
CurrentPeriod int `json:"current_period"`
|
||||
Score Score `json:"score"`
|
||||
Starting bool `json:"starting"`
|
||||
CanStart bool `json:"can_start"`
|
||||
}
|
||||
|
||||
// LobbyCreationRequest contains the parameters for creating a new lobby
|
||||
type LobbyCreationRequest struct {
|
||||
Region string `json:"region"`
|
||||
Name string `json:"name"`
|
||||
Password string `json:"password"`
|
||||
CreatorName string `json:"creator_name"`
|
||||
|
||||
// Optional fields
|
||||
IsPeriods *bool `json:"is_periods,omitempty"`
|
||||
CurrentPeriod *int `json:"current_period,omitempty"`
|
||||
MatchLength *int `json:"match_length,omitempty"`
|
||||
MercyRule *int `json:"mercy_rule,omitempty"`
|
||||
Arena string `json:"arena,omitempty"`
|
||||
|
||||
InitialScore *Score `json:"initial_score,omitempty"`
|
||||
}
|
||||
|
||||
// LobbyCreationResponse is returned when a lobby is successfully created
|
||||
type LobbyCreationResponse struct {
|
||||
Success bool `json:"success"`
|
||||
LobbyID string `json:"lobby_id"`
|
||||
}
|
||||
|
||||
// MatchmakingPlayer represents a player in the matchmaking queue
|
||||
type MatchmakingPlayer struct {
|
||||
UUID int `json:"uuid"`
|
||||
Username string `json:"username"`
|
||||
}
|
||||
|
||||
// MatchmakingRegion represents a region in a matchmaking entity
|
||||
type MatchmakingRegion struct {
|
||||
Key string `json:"key"`
|
||||
Name string `json:"name"`
|
||||
}
|
||||
|
||||
// MatchmakingEntity represents a group/party in the matchmaking queue
|
||||
type MatchmakingEntity struct {
|
||||
Players []MatchmakingPlayer `json:"players"`
|
||||
Regions []MatchmakingRegion `json:"regions"`
|
||||
MMR int `json:"mmr"`
|
||||
MMROffset int `json:"mmr_offset"`
|
||||
}
|
||||
|
||||
// MatchmakingResponse is the full matchmaking queue response from the API
|
||||
type MatchmakingResponse struct {
|
||||
Entities []MatchmakingEntity `json:"entities"`
|
||||
Playlists PubsQueue `json:"playlists"`
|
||||
}
|
||||
Reference in New Issue
Block a user