mirror of
https://github.com/RetroDECK/ES-DE.git
synced 2024-11-25 07:35:38 +00:00
IScraper renamed to Scraper.
Scraper now contains a partial implementation since almost all scrapers will follow the pattern of create HttpReq -> create and wait for AsyncReqComponent -> parse HttpReq contents.
This commit is contained in:
parent
fdb1358a7f
commit
b2f615347e
|
@ -230,6 +230,7 @@ set(ES_SOURCES
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/src/components/GuiInputConfig.cpp
|
${CMAKE_CURRENT_SOURCE_DIR}/src/components/GuiInputConfig.cpp
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/src/components/GuiMenu.cpp
|
${CMAKE_CURRENT_SOURCE_DIR}/src/components/GuiMenu.cpp
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/src/components/GuiSettingsMenu.cpp
|
${CMAKE_CURRENT_SOURCE_DIR}/src/components/GuiSettingsMenu.cpp
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/src/scrapers/Scraper.cpp
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/src/scrapers/GamesDBScraper.cpp
|
${CMAKE_CURRENT_SOURCE_DIR}/src/scrapers/GamesDBScraper.cpp
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/src/scrapers/TheArchiveScraper.cpp
|
${CMAKE_CURRENT_SOURCE_DIR}/src/scrapers/TheArchiveScraper.cpp
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/src/pugiXML/pugixml.cpp
|
${CMAKE_CURRENT_SOURCE_DIR}/src/pugiXML/pugixml.cpp
|
||||||
|
|
|
@ -92,7 +92,7 @@ void Settings::loadFile()
|
||||||
setFloat(node.attribute("name").as_string(), node.attribute("value").as_float());
|
setFloat(node.attribute("name").as_string(), node.attribute("value").as_float());
|
||||||
}
|
}
|
||||||
|
|
||||||
IScraper* Settings::getScraper()
|
Scraper* Settings::getScraper()
|
||||||
{
|
{
|
||||||
return mScraper;
|
return mScraper;
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,7 +23,7 @@ public:
|
||||||
void setInt(const std::string& name, int value);
|
void setInt(const std::string& name, int value);
|
||||||
void setFloat(const std::string& name, float value);
|
void setFloat(const std::string& name, float value);
|
||||||
|
|
||||||
IScraper* getScraper();
|
Scraper* getScraper();
|
||||||
private:
|
private:
|
||||||
static Settings* sInstance;
|
static Settings* sInstance;
|
||||||
|
|
||||||
|
@ -35,7 +35,7 @@ private:
|
||||||
std::map<std::string, bool> mBoolMap;
|
std::map<std::string, bool> mBoolMap;
|
||||||
std::map<std::string, int> mIntMap;
|
std::map<std::string, int> mIntMap;
|
||||||
std::map<std::string, float> mFloatMap;
|
std::map<std::string, float> mFloatMap;
|
||||||
IScraper* mScraper;
|
Scraper* mScraper;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -4,14 +4,6 @@
|
||||||
#include "../Log.h"
|
#include "../Log.h"
|
||||||
#include "../pugiXML/pugixml.hpp"
|
#include "../pugiXML/pugixml.hpp"
|
||||||
|
|
||||||
std::vector<MetaDataList> GamesDBScraper::getResults(ScraperSearchParams params)
|
|
||||||
{
|
|
||||||
std::shared_ptr<HttpReq> req = makeHttpReq(params);
|
|
||||||
while(req->status() == HttpReq::REQ_IN_PROGRESS);
|
|
||||||
|
|
||||||
return parseReq(params, req);
|
|
||||||
}
|
|
||||||
|
|
||||||
std::shared_ptr<HttpReq> GamesDBScraper::makeHttpReq(ScraperSearchParams params)
|
std::shared_ptr<HttpReq> GamesDBScraper::makeHttpReq(ScraperSearchParams params)
|
||||||
{
|
{
|
||||||
std::string path = "/api/GetGame.php?";
|
std::string path = "/api/GetGame.php?";
|
||||||
|
@ -75,17 +67,3 @@ std::vector<MetaDataList> GamesDBScraper::parseReq(ScraperSearchParams params, s
|
||||||
|
|
||||||
return mdl;
|
return mdl;
|
||||||
}
|
}
|
||||||
|
|
||||||
void GamesDBScraper::getResultsAsync(ScraperSearchParams params, Window* window, std::function<void(std::vector<MetaDataList>)> returnFunc)
|
|
||||||
{
|
|
||||||
std::shared_ptr<HttpReq> httpreq = makeHttpReq(params);
|
|
||||||
AsyncReqComponent* req = new AsyncReqComponent(window, httpreq,
|
|
||||||
[this, params, returnFunc] (std::shared_ptr<HttpReq> r)
|
|
||||||
{
|
|
||||||
returnFunc(parseReq(params, r));
|
|
||||||
}, [] ()
|
|
||||||
{
|
|
||||||
});
|
|
||||||
|
|
||||||
window->pushGui(req);
|
|
||||||
}
|
|
||||||
|
|
|
@ -3,14 +3,9 @@
|
||||||
#include "Scraper.h"
|
#include "Scraper.h"
|
||||||
#include "../HttpReq.h"
|
#include "../HttpReq.h"
|
||||||
|
|
||||||
class GamesDBScraper : public IScraper
|
class GamesDBScraper : public Scraper
|
||||||
{
|
{
|
||||||
public:
|
|
||||||
std::vector<MetaDataList> getResults(ScraperSearchParams params) override;
|
|
||||||
void getResultsAsync(ScraperSearchParams params, Window* window, std::function<void(std::vector<MetaDataList>)> returnFunc) override;
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::shared_ptr<HttpReq> makeHttpReq(ScraperSearchParams params);
|
std::shared_ptr<HttpReq> makeHttpReq(ScraperSearchParams params) override;
|
||||||
std::vector<MetaDataList> parseReq(ScraperSearchParams params, std::shared_ptr<HttpReq>);
|
std::vector<MetaDataList> parseReq(ScraperSearchParams params, std::shared_ptr<HttpReq>) override;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
25
src/scrapers/Scraper.cpp
Normal file
25
src/scrapers/Scraper.cpp
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
#include "Scraper.h"
|
||||||
|
#include "../components/AsyncReqComponent.h"
|
||||||
|
|
||||||
|
std::vector<MetaDataList> Scraper::getResults(ScraperSearchParams params)
|
||||||
|
{
|
||||||
|
std::shared_ptr<HttpReq> req = makeHttpReq(params);
|
||||||
|
while(req->status() == HttpReq::REQ_IN_PROGRESS);
|
||||||
|
|
||||||
|
return parseReq(params, req);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Scraper::getResultsAsync(ScraperSearchParams params, Window* window, std::function<void(std::vector<MetaDataList>)> returnFunc)
|
||||||
|
{
|
||||||
|
std::shared_ptr<HttpReq> httpreq = makeHttpReq(params);
|
||||||
|
AsyncReqComponent* req = new AsyncReqComponent(window, httpreq,
|
||||||
|
[this, params, returnFunc] (std::shared_ptr<HttpReq> r)
|
||||||
|
{
|
||||||
|
returnFunc(parseReq(params, r));
|
||||||
|
}, [returnFunc] ()
|
||||||
|
{
|
||||||
|
returnFunc(std::vector<MetaDataList>());
|
||||||
|
});
|
||||||
|
|
||||||
|
window->pushGui(req);
|
||||||
|
}
|
|
@ -3,6 +3,7 @@
|
||||||
#include "../MetaData.h"
|
#include "../MetaData.h"
|
||||||
#include "../SystemData.h"
|
#include "../SystemData.h"
|
||||||
#include "../GameData.h"
|
#include "../GameData.h"
|
||||||
|
#include "../HttpReq.h"
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <functional>
|
#include <functional>
|
||||||
|
|
||||||
|
@ -16,11 +17,14 @@ struct ScraperSearchParams
|
||||||
std::string nameOverride;
|
std::string nameOverride;
|
||||||
};
|
};
|
||||||
|
|
||||||
class IScraper
|
class Scraper
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
//Get a list of potential results.
|
//Get a list of potential results.
|
||||||
virtual std::vector<MetaDataList> getResults(ScraperSearchParams params) = 0;
|
virtual std::vector<MetaDataList> getResults(ScraperSearchParams params);
|
||||||
virtual void getResultsAsync(ScraperSearchParams params, Window* window, std::function<void(std::vector<MetaDataList>)> returnFunc) = 0;
|
virtual void getResultsAsync(ScraperSearchParams params, Window* window, std::function<void(std::vector<MetaDataList>)> returnFunc);
|
||||||
};
|
|
||||||
|
|
||||||
|
private:
|
||||||
|
virtual std::shared_ptr<HttpReq> makeHttpReq(ScraperSearchParams params) = 0;
|
||||||
|
virtual std::vector<MetaDataList> parseReq(ScraperSearchParams params, std::shared_ptr<HttpReq>) = 0;
|
||||||
|
};
|
||||||
|
|
|
@ -4,14 +4,6 @@
|
||||||
#include "../Log.h"
|
#include "../Log.h"
|
||||||
#include "../pugiXML/pugixml.hpp"
|
#include "../pugiXML/pugixml.hpp"
|
||||||
|
|
||||||
std::vector<MetaDataList> TheArchiveScraper::getResults(ScraperSearchParams params)
|
|
||||||
{
|
|
||||||
std::shared_ptr<HttpReq> req = makeHttpReq(params);
|
|
||||||
while(req->status() == HttpReq::REQ_IN_PROGRESS);
|
|
||||||
|
|
||||||
return parseReq(params, req);
|
|
||||||
}
|
|
||||||
|
|
||||||
std::shared_ptr<HttpReq> TheArchiveScraper::makeHttpReq(ScraperSearchParams params)
|
std::shared_ptr<HttpReq> TheArchiveScraper::makeHttpReq(ScraperSearchParams params)
|
||||||
{
|
{
|
||||||
std::string path = "/2.0/Archive.search/xml/7TTRM4MNTIKR2NNAGASURHJOZJ3QXQC5/";
|
std::string path = "/2.0/Archive.search/xml/7TTRM4MNTIKR2NNAGASURHJOZJ3QXQC5/";
|
||||||
|
@ -68,17 +60,3 @@ std::vector<MetaDataList> TheArchiveScraper::parseReq(ScraperSearchParams params
|
||||||
|
|
||||||
return mdl;
|
return mdl;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TheArchiveScraper::getResultsAsync(ScraperSearchParams params, Window* window, std::function<void(std::vector<MetaDataList>)> returnFunc)
|
|
||||||
{
|
|
||||||
std::shared_ptr<HttpReq> httpreq = makeHttpReq(params);
|
|
||||||
AsyncReqComponent* req = new AsyncReqComponent(window, httpreq,
|
|
||||||
[this, params, returnFunc] (std::shared_ptr<HttpReq> r)
|
|
||||||
{
|
|
||||||
returnFunc(parseReq(params, r));
|
|
||||||
}, [] ()
|
|
||||||
{
|
|
||||||
});
|
|
||||||
|
|
||||||
window->pushGui(req);
|
|
||||||
}
|
|
||||||
|
|
|
@ -3,14 +3,10 @@
|
||||||
#include "Scraper.h"
|
#include "Scraper.h"
|
||||||
#include "../HttpReq.h"
|
#include "../HttpReq.h"
|
||||||
|
|
||||||
class TheArchiveScraper : public IScraper
|
class TheArchiveScraper : public Scraper
|
||||||
{
|
{
|
||||||
public:
|
|
||||||
std::vector<MetaDataList> getResults(ScraperSearchParams params) override;
|
|
||||||
void getResultsAsync(ScraperSearchParams params, Window* window, std::function<void(std::vector<MetaDataList>)> returnFunc) override;
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::shared_ptr<HttpReq> makeHttpReq(ScraperSearchParams params);
|
std::shared_ptr<HttpReq> makeHttpReq(ScraperSearchParams params) override;
|
||||||
std::vector<MetaDataList> parseReq(ScraperSearchParams params, std::shared_ptr<HttpReq>);
|
std::vector<MetaDataList> parseReq(ScraperSearchParams params, std::shared_ptr<HttpReq>) override;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue