| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- package consts
- import (
- "encoding/json"
- "log/slog"
- "net/http"
- "os"
- "path/filepath"
- "github.com/diamondburned/arikawa/v3/discord"
- "github.com/diamondburned/arikawa/v3/gateway"
- )
- const Name = "discordo"
- const identifyPropertiesURL = "https://cordapi.dolfi.es/api/v2/properties/web"
- var defaultIdentifyProps = gateway.IdentifyProperties{
- Device: "",
- Browser: "Chrome",
- BrowserUserAgent: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36",
- BrowserVersion: "138.0.0.0",
- OS: "Windows",
- OSVersion: "10",
- ClientBuildNumber: 415522,
- ReleaseChannel: "stable",
- SystemLocale: discord.EnglishUS,
- HasClientMods: false,
- }
- func GetIdentifyProps() gateway.IdentifyProperties {
- resp, err := http.Get(identifyPropertiesURL)
- if err != nil {
- return defaultIdentifyProps
- }
- defer resp.Body.Close()
- var props struct {
- Client struct {
- Type string `json:"type"`
- BuildNumber int `json:"build_number"`
- BuildHash string `json:"build_hash"`
- ReleaseChannel string `json:"release_channel"`
- } `json:"client"`
- Browser struct {
- Type string `json:"type"`
- UserAgent string `json:"user_agent"`
- Version string `json:"version"`
- OS struct {
- Type string `json:"type"`
- Version string `json:"version"`
- } `json:"os"`
- } `json:"browser"`
- }
- if err := json.NewDecoder(resp.Body).Decode(&props); err != nil {
- return defaultIdentifyProps
- }
- return gateway.IdentifyProperties{
- Device: "",
- Browser: props.Browser.Type,
- BrowserUserAgent: props.Browser.UserAgent,
- BrowserVersion: props.Browser.Version,
- OS: props.Browser.OS.Type,
- OSVersion: props.Browser.OS.Version,
- ClientBuildNumber: props.Client.BuildNumber,
- ReleaseChannel: props.Client.ReleaseChannel,
- SystemLocale: discord.EnglishUS,
- HasClientMods: false,
- }
- }
- var cacheDir string
- func CacheDir() string {
- return cacheDir
- }
- func init() {
- userCacheDir, err := os.UserCacheDir()
- if err != nil {
- userCacheDir = os.TempDir()
- slog.Warn("failed to get user cache dir; falling back to temp dir", "err", err, "path", userCacheDir)
- }
- cacheDir = filepath.Join(userCacheDir, Name)
- if err := os.MkdirAll(cacheDir, os.ModePerm); err != nil {
- slog.Error("failed to create cache dir", "err", err, "path", cacheDir)
- }
- }
|