OOKNET                             [ /  search the index  ]  
──────────────────────────────────────────────────────────────────────────────────────
══════════════════════════════════════════════════════════════════════════════════════
OOKNET   [ /  search  ]  
────────────────────────────────────────────────
════════════════════════════════════════════════
 
 
master @ 64 LINES
 
[ HISTORY ]  [ UP ]
 

package playerid

import (
	_ "embed"
	"encoding/json"
	"fmt"
	"sort"

	"ookstats/internal/blizzard"
)

//go:embed account_fingerprint_trusted.json
var trustedJSON []byte

// regenerate via `ookstats investigate-account --pairs-file` then rebuild
var trustedAccountWideIDs map[int]struct{}

func init() {
	type entry struct {
		ID int `json:"id"`
	}
	var rep struct {
		Trusted []entry `json:"trusted"`
	}
	if err := json.Unmarshal(trustedJSON, &rep); err != nil {
		panic(fmt.Sprintf("playerid: parse embedded trusted set: %v", err))
	}
	trustedAccountWideIDs = make(map[int]struct{}, len(rep.Trusted))
	for _, e := range rep.Trusted {
		trustedAccountWideIDs[e.ID] = struct{}{}
	}
	if len(trustedAccountWideIDs) == 0 {
		panic("playerid: embedded trusted set is empty")
	}
}

type TrustedTuple struct {
	ID int   `json:"id"`
	Ts int64 `json:"ts"`
}

func TrustedAccountWideIDCount() int {
	return len(trustedAccountWideIDs)
}

// sorted by id for deterministic downstream serialisation
func ExtractTrustedTuples(resp *blizzard.CharacterAchievementsResponse) []TrustedT
uple {
	if resp == nil {
		return nil
	}
	out := make([]TrustedTuple, 0, len(trustedAccountWideIDs))
	for _, a := range resp.Achievements {
		if a.CompletedTimestamp == nil {
			continue
		}
		if _, ok := trustedAccountWideIDs[a.ID]; !ok {
			continue
		}
		out = append(out, TrustedTuple{ID: a.ID, Ts: *a.CompletedTimestamp})
	}
	sort.Slice(out, func(i, j int) bool { return out[i].ID < out[j].ID })
	return out
}

package playerid

import (
	_ "embed"
	"encoding/json"
	"fmt"
	"sort"

	"ookstats/internal/blizzard"
)

//go:embed account_fingerprint_trusted.json
var trustedJSON []byte

// regenerate via `ookstats investigate-acco
unt --pairs-file` then rebuild
var trustedAccountWideIDs map[int]struct{}

func init() {
	type entry struct {
		ID int `json:"id"`
	}
	var rep struct {
		Trusted []entry `json:"trusted"`
	}
	if err := json.Unmarshal(trustedJSON, &rep)
; err != nil {
		panic(fmt.Sprintf("playerid: parse embedde
d trusted set: %v", err))
	}
	trustedAccountWideIDs = make(map[int]struct
{}, len(rep.Trusted))
	for _, e := range rep.Trusted {
		trustedAccountWideIDs[e.ID] = struct{}{}
	}
	if len(trustedAccountWideIDs) == 0 {
		panic("playerid: embedded trusted set is e
mpty")
	}
}

type TrustedTuple struct {
	ID int   `json:"id"`
	Ts int64 `json:"ts"`
}

func TrustedAccountWideIDCount() int {
	return len(trustedAccountWideIDs)
}

// sorted by id for deterministic downstream
 serialisation
func ExtractTrustedTuples(resp *blizzard.Cha
racterAchievementsResponse) []TrustedTuple {
	if resp == nil {
		return nil
	}
	out := make([]TrustedTuple, 0, len(trustedA
ccountWideIDs))
	for _, a := range resp.Achievements {
		if a.CompletedTimestamp == nil {
			continue
		}
		if _, ok := trustedAccountWideIDs[a.ID]; !
ok {
			continue
		}
		out = append(out, TrustedTuple{ID: a.ID, T
s: *a.CompletedTimestamp})
	}
	sort.Slice(out, func(i, j int) bool { retur
n out[i].ID < out[j].ID })
	return out
}
 
──────────────────────────────────────────────────────────────────────────────────────
OOKNET
────────────────────────────────────────────────
OOKNET