diff --git a/es-app/src/scrapers/GamesDBScraper.cpp b/es-app/src/scrapers/GamesDBScraper.cpp index 2bcbb86a9..436bafee1 100644 --- a/es-app/src/scrapers/GamesDBScraper.cpp +++ b/es-app/src/scrapers/GamesDBScraper.cpp @@ -84,12 +84,12 @@ void thegamesdb_generate_scraper_requests(const ScraperSearchParams& params, std if (!cleanName.empty() && cleanName.substr(0,3) == "id:") { std::string gameID = cleanName.substr(3); - path = "thegamesdb.net/api/GetGame.php?id=" + HttpReq::urlEncode(gameID); + path = "legacy.thegamesdb.net/api/GetGame.php?id=" + HttpReq::urlEncode(gameID); usingGameID = true; }else{ if (cleanName.empty()) cleanName = params.game->getCleanName(); - path += "thegamesdb.net/api/GetGamesList.php?name=" + HttpReq::urlEncode(cleanName); + path += "legacy.thegamesdb.net/api/GetGamesList.php?name=" + HttpReq::urlEncode(cleanName); } if(usingGameID) @@ -201,7 +201,7 @@ void TheGamesDBRequest::processList(const pugi::xml_document& xmldoc, std::vecto for(int i = 0; game && i < MAX_SCRAPER_RESULTS; i++) { std::string id = game.child("id").text().get(); - std::string path = "thegamesdb.net/api/GetGame.php?id=" + id; + std::string path = "legacy.thegamesdb.net/api/GetGame.php?id=" + id; mRequestQueue->push(std::unique_ptr(new TheGamesDBRequest(results, path))); diff --git a/es-core/src/HttpReq.cpp b/es-core/src/HttpReq.cpp index 7005b2409..9bdeedf79 100644 --- a/es-core/src/HttpReq.cpp +++ b/es-core/src/HttpReq.cpp @@ -58,6 +58,33 @@ HttpReq::HttpReq(const std::string& url) return; } + //set curl to handle redirects + err = curl_easy_setopt(mHandle, CURLOPT_FOLLOWLOCATION, 1L); + if(err != CURLE_OK) + { + mStatus = REQ_IO_ERROR; + onError(curl_easy_strerror(err)); + return; + } + + //set curl max redirects + err = curl_easy_setopt(mHandle, CURLOPT_MAXREDIRS, 2L); + if(err != CURLE_OK) + { + mStatus = REQ_IO_ERROR; + onError(curl_easy_strerror(err)); + return; + } + + //set curl restrict redirect protocols + err = curl_easy_setopt(mHandle, CURLOPT_REDIR_PROTOCOLS, CURLPROTO_HTTP | CURLPROTO_HTTPS); + if(err != CURLE_OK) + { + mStatus = REQ_IO_ERROR; + onError(curl_easy_strerror(err)); + return; + } + //tell curl how to write the data err = curl_easy_setopt(mHandle, CURLOPT_WRITEFUNCTION, &HttpReq::write_content); if(err != CURLE_OK)