83 lines
3.6 KiB
Go
83 lines
3.6 KiB
Go
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}
|
|
}
|