games-screenshot-manager/pkg/providers/nintendo_switch/helpers.go

69 lines
1.8 KiB
Go

package nintendo_switch
import (
"encoding/json"
"fmt"
"io/ioutil"
"strings"
"github.com/fmartingr/games-screenshot-manager/internal/models"
"github.com/fmartingr/games-screenshot-manager/pkg/helpers"
)
type SwitchGame struct {
Name string `json:"title_normalized"`
EncryptedGameID string `json:"encrypted_game_id"`
}
func findGameByEncryptedID(gameList []SwitchGame, encryptedGameID string) SwitchGame {
var gameFound SwitchGame = SwitchGame{EncryptedGameID: encryptedGameID}
for _, game := range gameList {
if strings.EqualFold(game.EncryptedGameID, encryptedGameID) {
gameFound = game
}
}
return gameFound
}
func getSwitchGameList() (result []SwitchGame, err error) {
response, err := helpers.DoRequest("GET", gameListURL)
if err != nil {
return nil, fmt.Errorf("error getting switch game list: %s", err)
}
if response.Body != nil {
defer response.Body.Close()
}
body, err := ioutil.ReadAll(response.Body)
if err != nil {
return nil, fmt.Errorf("error getting switch game list: %s", err)
}
jsonErr := json.Unmarshal(body, &result)
if jsonErr != nil {
return nil, fmt.Errorf("error getting switch game list: %s", err)
}
return
}
func addScreenshotToGame(userGames []*models.Game, switchGame SwitchGame, screenshot models.Screenshot) []*models.Game {
var foundGame *models.Game
for gameIndex, game := range userGames {
if game.ID == switchGame.EncryptedGameID {
foundGame = game
userGames[gameIndex].Screenshots = append(userGames[gameIndex].Screenshots, screenshot)
}
}
if foundGame == nil {
foundGame := models.Game{Name: switchGame.Name, ID: switchGame.EncryptedGameID, Platform: platformName, Provider: platformName}
foundGame.Screenshots = append(foundGame.Screenshots, screenshot)
userGames = append(userGames, &foundGame)
}
return userGames
}