public List <LibraryGameResponse> GetOwnedGames(AccountBasicRespose account) { var baseUrl = @"https://www.gog.com/u/{0}/games/stats?sort=recent_playtime&order=desc&page={1}"; var url = string.Format(baseUrl, account.username, 1); webView.NavigateAndWait(url); var gamesList = webView.GetPageText(); var games = new List <LibraryGameResponse>(); var libraryData = JsonConvert.DeserializeObject <PagedResponse <LibraryGameResponse> >(gamesList); if (libraryData == null) { logger.Error("GOG library content is empty or private."); return(null); } games.AddRange(libraryData._embedded.items); if (libraryData.pages > 1) { for (int i = 2; i <= libraryData.pages; i++) { webView.NavigateAndWait(string.Format(baseUrl, account.username, i)); gamesList = webView.GetPageText(); var pageData = JsonConvert.DeserializeObject <PagedResponse <LibraryGameResponse> >(gamesList); games.AddRange(pageData._embedded.items); } } return(games); }
public List <LibraryGameResponse> GetOwnedGames(AccountBasicRespose account) { var baseUrl = @"https://www.gog.com/u/{0}/games/stats?sort=recent_playtime&order=desc&page={1}"; var stringLibContent = string.Empty; var games = new List <LibraryGameResponse>(); try { var url = string.Format(baseUrl, account.username, 1); webView.NavigateAndWait(url); stringLibContent = webView.GetPageText(); var libraryData = JsonConvert.DeserializeObject <PagedResponse <LibraryGameResponse> >(stringLibContent); if (libraryData == null) { logger.Error("GOG library content is empty."); return(null); } games.AddRange(libraryData._embedded.items); if (libraryData.pages > 1) { for (int i = 2; i <= libraryData.pages; i++) { webView.NavigateAndWait(string.Format(baseUrl, account.username, i)); stringLibContent = webView.GetPageText(); var pageData = JsonConvert.DeserializeObject <PagedResponse <LibraryGameResponse> >(stringLibContent); games.AddRange(pageData._embedded.items); } } return(games); } catch (Exception e) { logger.Error(e, $"Failed to library from new API for account {account.username}, falling back to legacy."); logger.Debug(stringLibContent); return(GetOwnedGamesLegacy()); } }