Documentation ¶
Index ¶
- type Achievements
- type Calculations
- type GameArchievements
- type GameExtras
- type GameStats
- type LastMatch
- type Mapstat
- type PlayerHistory
- type PlayerHistoryEntry
- type PlayerInfo
- type PlayerSummary
- type RecentlyPlayedGames
- type Stats
- type SteamClient
- type SteamConfig
- type UserStatsForGame
- type Weaponstat
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Achievements ¶
Achievements is the nested struct to hold the "archivements" array returned by the steam API endopint GetUserStatsForGame
type Calculations ¶
Calculations holds additional values to be shown in the templates, that are calculated on-the-fly
type GameArchievements ¶
type GameArchievements struct { }
GameArchievements holds the players archievement data from the steam API endpoint UserStatsForGame
type GameExtras ¶
type GameExtras struct { // SteamID of the player SteamID uint64 // Total KD ratio TotalKD string // KD ratio of the last match LastMatchKD string // Total hit ratio HitRatio string // Total played hours PlayedHours string // Total Average damage per round TotalADR string // Last match average damage per round LastMatchADR string }
GameExtras holds data in the same way as the other nested structs. This data is not fetched from an endpoint but calculated based on other values locally
type GameStats ¶
type GameStats struct { SteamID uint64 GILessonCsgoInstrExplainInspect int GILessonBombSitesA int GILessonBombSitesB int GILessonCsgoCycleWeaponsKb int GILessonCsgoHostageLeadToHrz int GILessonCsgoInstrExplainBombCarrier int GILessonCsgoInstrExplainBuyarmor int GILessonCsgoInstrExplainFollowBomber int GILessonCsgoInstrExplainPickupBomb int GILessonCsgoInstrExplainPlantBomb int GILessonCsgoInstrExplainPreventBombPickup int GILessonCsgoInstrExplainReload int GILessonCsgoInstrExplainZoom int GILessonCsgoInstrRescueZone int GILessonDefusePlantedBomb int GILessonFindPlantedBomb int GILessonTrExplainPlantBomb int GILessonVersionNumber int LastMatchContributionScore int LastMatchCtWins int LastMatchDamage int LastMatchDeaths int LastMatchDominations int LastMatchFavweaponHits int LastMatchFavweaponID int LastMatchFavweaponKills int LastMatchFavweaponShots int LastMatchGgContributionScore int LastMatchKills int LastMatchMaxPlayers int LastMatchMoneySpent int LastMatchMvps int LastMatchRevenges int LastMatchRounds int LastMatchTWins int LastMatchWins int SteamStatMatchwinscomp int SteamStatSurvivedz int SteamStatXpearnedgames int TotalBrokenWindows int TotalContributionScore int TotalDamageDone int TotalDeaths int TotalDefusedBombs int TotalDominationOverkills int TotalDominations int TotalGgMatchesPlayed int TotalGgMatchesWon int TotalGunGameContributionScore int TotalGunGameRoundsPlayed int TotalGunGameRoundsWon int TotalHitsAk47 int TotalHitsAug int TotalHitsAwp int TotalHitsBizon int TotalHitsDeagle int TotalHitsElite int TotalHitsFamas int TotalHitsFiveseven int TotalHitsG3sg1 int TotalHitsGalilar int TotalHitsGlock int TotalHitsHkp2000 int TotalHitsM249 int TotalHitsM4a1 int TotalHitsMac10 int TotalHitsMag7 int TotalHitsMp7 int TotalHitsMp9 int TotalHitsNegev int TotalHitsNova int TotalHitsP250 int TotalHitsP90 int TotalHitsSawedoff int TotalHitsScar20 int TotalHitsSg556 int TotalHitsSsg08 int TotalHitsTec9 int TotalHitsUmp45 int TotalHitsXm1014 int TotalKills int TotalKillsAgainstZoomedSniper int TotalKillsAk47 int TotalKillsAug int TotalKillsAwp int TotalKillsBizon int TotalKillsDeagle int TotalKillsElite int TotalKillsEnemyBlinded int TotalKillsEnemyWeapon int TotalKillsFamas int TotalKillsFiveseven int TotalKillsG3sg1 int TotalKillsGalilar int TotalKillsGlock int TotalKillsHeadshot int TotalKillsHegrenade int TotalKillsHkp2000 int TotalKillsKnife int TotalKillsKnifeFight int TotalKillsM249 int TotalKillsM4a1 int TotalKillsMac10 int TotalKillsMag7 int TotalKillsMolotov int TotalKillsMp7 int TotalKillsMp9 int TotalKillsNegev int TotalKillsNova int TotalKillsP250 int TotalKillsP90 int TotalKillsSawedoff int TotalKillsScar20 int TotalKillsSg556 int TotalKillsSsg08 int TotalKillsTaser int TotalKillsTec9 int TotalKillsUmp45 int TotalKillsXm1014 int TotalMatchesPlayed int TotalMatchesWon int TotalMatchesWonBaggage int TotalMatchesWonBank int TotalMatchesWonLake int TotalMatchesWonSafehouse int TotalMatchesWonShoots int TotalMatchesWonStmarc int TotalMatchesWonSugarcane int TotalMatchesWonTrain int TotalMoneyEarned int TotalMvps int TotalPlantedBombs int TotalProgressiveMatchesWon int TotalRescuedHostages int TotalRevenges int TotalRoundsMapArBaggage int TotalRoundsMapArMonastery int TotalRoundsMapArShoots int TotalRoundsMapCsAssault int TotalRoundsMapCsItaly int TotalRoundsMapCsMilitia int TotalRoundsMapCsOffice int TotalRoundsMapDeAztec int TotalRoundsMapDeBank int TotalRoundsMapDeCbble int TotalRoundsMapDeDust int TotalRoundsMapDeDust2 int TotalRoundsMapDeInferno int TotalRoundsMapDeLake int TotalRoundsMapDeNuke int TotalRoundsMapDeSafehouse int TotalRoundsMapDeHouse int TotalRoundsMapDeShorttrain int TotalRoundsMapDeStmarc int TotalRoundsMapDeSugarcane int TotalRoundsMapDeTrain int TotalRoundsMapDeVertigo int TotalRoundsPlayed int TotalShotsAk47 int TotalShotsAug int TotalShotsAwp int TotalShotsBizon int TotalShotsDeagle int TotalShotsElite int TotalShotsFamas int TotalShotsFired int TotalShotsFiveseven int TotalShotsG3sg1 int TotalShotsGalilar int TotalShotsGlock int TotalShotsHit int TotalShotsHkp2000 int TotalShotsM249 int TotalShotsM4a1 int TotalShotsMac10 int TotalShotsMag7 int TotalShotsMp7 int TotalShotsMp9 int TotalShotsNegev int TotalShotsNova int TotalShotsP250 int TotalShotsP90 int TotalShotsSawedoff int TotalShotsScar20 int TotalShotsSg556 int TotalShotsSsg08 int TotalShotsTaser int TotalShotsTec9 int TotalShotsUmp45 int TotalShotsXm1014 int TotalTRDefusedBombs int TotalTRPlantedBombs int TotalTimePlayed int TotalTrbombMatchesWon int TotalWeaponsDonated int TotalWins int TotalWinsMapArBaggage int TotalWinsMapArMonastery int TotalWinsMapArShoots int TotalWinsMapCsAssault int TotalWinsMapCsItaly int TotalWinsMapCsMilitia int TotalWinsMapCsOffice int TotalWinsMapDeAztec int TotalWinsMapDeBank int TotalWinsMapDeCbble int TotalWinsMapDeDust int TotalWinsMapDeDust2 int TotalWinsMapDeHouse int TotalWinsMapDeInferno int TotalWinsMapDeLake int TotalWinsMapDeNuke int TotalWinsMapDeSafehouse int TotalWinsMapDeShorttrain int TotalWinsMapDeStmarc int TotalWinsMapDeSugarcane int TotalWinsMapDeTrain int TotalWinsMapDeVertigo int TotalWinsPistolround int }
GameStats holds the players stats data from the steam API endpoint UserStatsForGame
func (GameStats) WeaponStats ¶
func (gs GameStats) WeaponStats() []Weaponstat
WeaponStats returns stats for all weapons used by a player
type LastMatch ¶
type LastMatch struct { Outcome string FavWeaponIconPath string FavWeaponName string FavWeaponAccuracy string }
LastMatch hold additional stats calculated to be viewed in the templates
type Mapstat ¶
Mapstat holds all values for a map to be marshalled into JSON
func (Mapstat) MarshalJSON ¶
MarshalJSON converts a Mapstat struct to json, e.g. for the API
type PlayerHistory ¶
type PlayerHistory struct { //SteamID of the player SteamID string // Data array containing entries to the history with time and values Data []PlayerHistoryEntry }
PlayerHistory holds the players history data from the player_history table. Stats values that need to be saved over time, are added to this table and object.
type PlayerHistoryEntry ¶
type PlayerHistoryEntry struct { // SteamID of the player SteamID string // The time when the entry was saved Time time.Time // Total kill/death ratio TotalKD string // Total avarage damage per round TotalADR string // Last match avarage damage per round LastMatchADR string // Total kills TotalKills string // Total kills with headshot TotalKillsHeadshot string // Total shots hit TotalShotsHit string // Total shots fired TotalShotsFired string // Contribution score in last match LastMatchContributionScore string // Damage dealt in last match LastMatchDamage string // Death count in last match LastMatchDeaths string // Kills in last match LastMatchKills string // Number of round of last match LastMatchRounds string // Las match kill/death ratio LastMatchKD string // Total hit ratio HitRatio string // Platime in the last 2 weeks Playtime2Weeks string }
PlayerHistoryEntry holds on snapshot of the values that are tracked over time. The steamid field is no primary key in this case, since every player will have multiple entries
type PlayerInfo ¶
type PlayerInfo struct { PlayerSummary PlayerSummary UserStatsForGame UserStatsForGame RecentlyPlayedGames RecentlyPlayedGames PlayerHistory PlayerHistory }
PlayerInfo contains the information to be shown of a given player
func (PlayerInfo) Calc ¶
func (pi PlayerInfo) Calc() Calculations
Calc is a helper function to access the dynamically caluclated values from the templates
func (PlayerInfo) LastMatch ¶
func (pi PlayerInfo) LastMatch() LastMatch
LastMatch is a helper function to access the dynamically caluclated values from the templates
type PlayerSummary ¶
type PlayerSummary struct { // 64bit SteamID of the user SteamID uint64 // The player's persona name (display name) Personaname string // The full URL of the player's Steam Community profile. Profileurl string // The full URL of the player's 32x32px avatar. If the user // hasn't configured an avatar, this will be the default ? // avatar. Avatar string // The full URL of the player's 64x64px avatar. If the user // hasn't configured an avatar, this will be the default ? // avatar. Avatarmedium string // The full URL of the player's 184x184px avatar. If the // user hasn't configured an avatar, this will be the // default ? avatar. Avatarfull string // 0 - Offline // 1 - Online // 2 - Busy // 3 - Away // 4 - Snooze // 5 - looking to trade // 6 - looking to play. // The user's current status. If the player's profile is private, // this will always be "0", except if the user has set // their status to looking to trade or looking to play, // because a bug makes those status appear even if the // profile is private. Personastate string // This represents whether the profile is visible or not, // and if it is visible, why you are allowed to see it. // Note that because this WebAPI does not use // authentication, there are only two possible values // returned: 1 - the profile is not visible to you // (Private, Friends Only, etc), 3 - the profile is // "Public", and the data is visible. Mike Blaszczak's post // on Steam forums says, "The community visibility state // this API returns is different than the privacy state. // It's the effective visibility state from the account // making the request to the account being viewed given the // requesting account's relationship to the viewed // account." Communityvisibilitystate string // If set, indicates the user has a community profile // configured (will be set to '1') Profilestate string // The last time the user was online, in unix time. Only // available when you are friends with the requested user // (since Feb, 4). Lastlogoff string // If set, indicates the profile allows public comments. Commentpermission string // This value will be removed in a future update (see loccityid) Cityid string // If the user is currently in-game, this will be the name // of the game they are playing. This may be the name of a // non-Steam game shortcut. Gameextrainfo string // If the user is currently in-game, this value will be // returned and set to the gameid of that game. Gameid string // The ip and port of the game server the user is currently // playing on, if they are playing on-line in a game using // Steam matchmaking. Otherwise will be set to "0.0.0.0:0". Gameserverip string // An internal code indicating the user's city of // residence. A future update will provide this data in a // more useful way. steam_location gem/package makes // player location data readable for output. Loccityid string // If set on the user's Steam Community profile, The user's // country of residence, 2-character ISO country code Loccountrycode string // If set on the user's Steam Community profile, The user's state of residence Locstatecode string // The player's primary group, as configured in their Steam Community profile. Primaryclanid string // The player's "Real Name", if they have set it. Realname string // The time the player's account was created. Timecreated string }
PlayerSummary holds the players summary data from the steam API endpoint GetPlayerSummaries
type RecentlyPlayedGames ¶
type RecentlyPlayedGames struct { // SteamID of the player SteamID string // AppID for the game, 730 for CS:GO Appid string // Name of the game played Name string // Playtime in the last two weeks Playtime2Weeks string // Total playtime PlaytimeForever string // URL to the icon of the game ImgIconURL string // URL to the logo of the game ImgLogoURL string // Total playtime on windows PlaytimeWindowsForever string // Total playtime on mac PlaytimeMacForever string // Total playtime on linux PlaytimeLinuxForever string }
RecentlyPlayedGames holds the players summary data from the steam API endpoint GetRecentlyPlayedGames
type Stats ¶
Stats is the nested struct to hold the "stats" array returned by the steam API endopint GetUserStatsForGame
type SteamClient ¶
type SteamClient struct {
Config SteamConfig
}
SteamClient acts as main interface to interact with the steam API and gather data
func NewSteamClient ¶
func NewSteamClient(configPath string) *SteamClient
NewSteamClient returrns a new SteamClient
func (SteamClient) GetAvatarURL ¶
func (sc SteamClient) GetAvatarURL(id uint64) string
GetAvatarURL returns the URL to a players avatar image
func (SteamClient) GetPlayers ¶
func (sc SteamClient) GetPlayers() []PlayerInfo
GetPlayers returns info for all players fetched from the API using the steamIDs in it's config
type SteamConfig ¶
type SteamConfig struct { SteamAPIKey string `json:"SteamAPIKey"` SteamIDs []string `json:"SteamIDs"` HistoryInterval int `json:"HistoryInterval"` UpdateInterval int `json:"UpdateInterval"` PostgresUser string `json:"db_user"` PostgresPass string `json:"db_pass"` PostgresDbName string `json:"db_name"` PostgresDbHost string `json:"db_host"` }
SteamConfig struct holds the values as read from the configuration file config.json on startup
func NewSteamConfig ¶
func NewSteamConfig(configPath string) (SteamConfig, error)
NewSteamConfig creates a new configuration struct from a path pointing to the json configuration file. It will return an error if the file does not exist
type UserStatsForGame ¶
type UserStatsForGame struct { // SteamID of the player SteamID uint64 // Name of the game GameName string // GamesStats object containing stats for the game Stats GameStats // GameArchievements object containing archievements for the game Archivements GameArchievements // GameExtras object containig additional, calculated information Extra GameExtras }
UserStatsForGame holds the players summary data from the steam API endpoint GetUserStatsForGame
type Weaponstat ¶
type Weaponstat struct { Weapon common.EquipmentType Hits int Shots int Kills int }
Weaponstat holds all stat values for a weapon to be marshalled into JSON
func (Weaponstat) MarshalJSON ¶
func (ws Weaponstat) MarshalJSON() ([]byte, error)
MarshalJSON converts a Weaponstat struct to json, e.g. for the API