69 lines
1.8 KiB
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
|
|
}
|