feat(scum): add local game player intelligence
This commit is contained in:
@@ -0,0 +1,82 @@
|
||||
package dto
|
||||
|
||||
import (
|
||||
"browser.local/platform/domain"
|
||||
"time"
|
||||
)
|
||||
|
||||
type GamePlayerResponse struct {
|
||||
ID string `json:"id"`
|
||||
ServerInstanceID string `json:"serverInstanceId"`
|
||||
GamePlayerID string `json:"gamePlayerId"`
|
||||
DisplayName string `json:"displayName"`
|
||||
FirstSeenAt time.Time `json:"firstSeenAt"`
|
||||
LastSeenAt time.Time `json:"lastSeenAt"`
|
||||
}
|
||||
type GamePlayerAliasResponse struct {
|
||||
Alias string `json:"alias"`
|
||||
FirstSeenAt time.Time `json:"firstSeenAt"`
|
||||
LastSeenAt time.Time `json:"lastSeenAt"`
|
||||
}
|
||||
type GamePlayerSessionResponse struct {
|
||||
ID string `json:"id"`
|
||||
SourceSessionID string `json:"sourceSessionId"`
|
||||
StartedAt time.Time `json:"startedAt"`
|
||||
EndedAt time.Time `json:"endedAt,omitempty"`
|
||||
EndReason string `json:"endReason,omitempty"`
|
||||
}
|
||||
type GameAccessAttemptResponse struct {
|
||||
ID string `json:"id"`
|
||||
OccurredAt time.Time `json:"occurredAt"`
|
||||
Outcome string `json:"outcome"`
|
||||
Reason string `json:"reason"`
|
||||
}
|
||||
type GameSecuritySignalResponse struct {
|
||||
ID string `json:"id"`
|
||||
RuleKey string `json:"ruleKey"`
|
||||
Status string `json:"status"`
|
||||
EvidenceCount int `json:"evidenceCount"`
|
||||
Summary string `json:"summary"`
|
||||
FirstObservedAt time.Time `json:"firstObservedAt"`
|
||||
LastObservedAt time.Time `json:"lastObservedAt"`
|
||||
}
|
||||
type GamePlayerProfileResponse struct {
|
||||
Player GamePlayerResponse `json:"player"`
|
||||
Aliases []GamePlayerAliasResponse `json:"aliases"`
|
||||
Sessions []GamePlayerSessionResponse `json:"sessions"`
|
||||
AccessAttempts []GameAccessAttemptResponse `json:"accessAttempts"`
|
||||
SecuritySignals []GameSecuritySignalResponse `json:"securitySignals"`
|
||||
}
|
||||
type GamePlayerListResponse struct {
|
||||
Items []GamePlayerResponse `json:"items"`
|
||||
}
|
||||
|
||||
func GamePlayersFromDomain(values []domain.GamePlayer) []GamePlayerResponse {
|
||||
out := make([]GamePlayerResponse, len(values))
|
||||
for i, v := range values {
|
||||
out[i] = gamePlayerFromDomain(v)
|
||||
}
|
||||
return out
|
||||
}
|
||||
func GamePlayerListFromDomain(values []domain.GamePlayer) GamePlayerListResponse {
|
||||
return GamePlayerListResponse{Items: GamePlayersFromDomain(values)}
|
||||
}
|
||||
func GamePlayerProfileFromDomain(v domain.GamePlayerProfile) GamePlayerProfileResponse {
|
||||
out := GamePlayerProfileResponse{Player: gamePlayerFromDomain(v.Player), Aliases: make([]GamePlayerAliasResponse, len(v.Aliases)), Sessions: make([]GamePlayerSessionResponse, len(v.Sessions)), AccessAttempts: make([]GameAccessAttemptResponse, len(v.AccessAttempts)), SecuritySignals: make([]GameSecuritySignalResponse, len(v.SecuritySignals))}
|
||||
for i, x := range v.Aliases {
|
||||
out.Aliases[i] = GamePlayerAliasResponse{Alias: x.Alias, FirstSeenAt: x.FirstSeenAt, LastSeenAt: x.LastSeenAt}
|
||||
}
|
||||
for i, x := range v.Sessions {
|
||||
out.Sessions[i] = GamePlayerSessionResponse{ID: x.ID, SourceSessionID: x.SourceSessionID, StartedAt: x.StartedAt, EndedAt: x.EndedAt, EndReason: x.EndReason}
|
||||
}
|
||||
for i, x := range v.AccessAttempts {
|
||||
out.AccessAttempts[i] = GameAccessAttemptResponse{ID: x.ID, OccurredAt: x.OccurredAt, Outcome: x.Outcome, Reason: x.Reason}
|
||||
}
|
||||
for i, x := range v.SecuritySignals {
|
||||
out.SecuritySignals[i] = GameSecuritySignalResponse{ID: x.ID, RuleKey: x.RuleKey, Status: string(x.Status), EvidenceCount: x.EvidenceCount, Summary: x.Summary, FirstObservedAt: x.FirstObservedAt, LastObservedAt: x.LastObservedAt}
|
||||
}
|
||||
return out
|
||||
}
|
||||
func gamePlayerFromDomain(v domain.GamePlayer) GamePlayerResponse {
|
||||
return GamePlayerResponse{ID: v.ID, ServerInstanceID: v.ServerInstanceID, GamePlayerID: v.GamePlayerID, DisplayName: v.DisplayName, FirstSeenAt: v.FirstSeenAt, LastSeenAt: v.LastSeenAt}
|
||||
}
|
||||
Reference in New Issue
Block a user