initial commit
This commit is contained in:
55
internal/steam.go
Normal file
55
internal/steam.go
Normal file
@@ -0,0 +1,55 @@
|
||||
package steamimmich
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"io"
|
||||
"net/http"
|
||||
)
|
||||
|
||||
const UNKOWN_GAME_GAME = "Unkown"
|
||||
|
||||
type SteamAPIResponse struct {
|
||||
Success bool `json:"success"`
|
||||
Data struct {
|
||||
Name string `json:"name"`
|
||||
} `json:"data"`
|
||||
}
|
||||
|
||||
func getGameName(appid string, cache map[string]string) string {
|
||||
if name, ok := cache[appid]; ok {
|
||||
return name
|
||||
}
|
||||
|
||||
url := fmt.Sprintf("https://store.steampowered.com/api/appdetails?appids=%s", appid)
|
||||
resp, err := http.Get(url)
|
||||
if err != nil {
|
||||
fmt.Printf("Error fetching app name for %s: %v\n", appid, err)
|
||||
cache[appid] = UNKOWN_GAME_GAME
|
||||
return cache[appid]
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
|
||||
body, err := io.ReadAll(resp.Body)
|
||||
if err != nil {
|
||||
fmt.Printf("Error reading response for %s: %v\n", appid, err)
|
||||
cache[appid] = UNKOWN_GAME_GAME
|
||||
return cache[appid]
|
||||
}
|
||||
|
||||
var result map[string]SteamAPIResponse
|
||||
if err := json.Unmarshal(body, &result); err != nil {
|
||||
fmt.Printf("Error parsing JSON for %s: %v\n", appid, err)
|
||||
cache[appid] = UNKOWN_GAME_GAME
|
||||
return cache[appid]
|
||||
}
|
||||
|
||||
if entry, ok := result[appid]; ok && entry.Success {
|
||||
name := entry.Data.Name
|
||||
cache[appid] = name
|
||||
return name
|
||||
}
|
||||
|
||||
cache[appid] = UNKOWN_GAME_GAME
|
||||
return cache[appid]
|
||||
}
|
||||
Reference in New Issue
Block a user