Skip to content

Commit

Permalink
Merge pull request RetroPie#436 from RetroPie/scraper-fix
Browse files Browse the repository at this point in the history
set curl to follow redirects to fix scraper error
  • Loading branch information
jrassa authored Jun 6, 2018
2 parents e642779 + 86a2cb7 commit c6a8a4b
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 3 deletions.
6 changes: 3 additions & 3 deletions es-app/src/scrapers/GamesDBScraper.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -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<ScraperRequest>(new TheGamesDBRequest(results, path)));

Expand Down
27 changes: 27 additions & 0 deletions es-core/src/HttpReq.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down

0 comments on commit c6a8a4b

Please sign in to comment.