lolautoaccept/include/datadragon.h
2022-04-23 00:59:58 +02:00

52 lines
1.1 KiB
C++

#pragma once
#include <string>
#include <vector>
#include <curl/curl.h>
#include <QJsonDocument>
#include <opencv2/opencv.hpp>
class DataDragon {
public:
DataDragon();
DataDragon(const DataDragon&) = delete;
DataDragon& operator=(const DataDragon&) = delete;
struct ChampData {
public:
ChampData();
ChampData(const QJsonObject& source);
std::string name;
std::string id;
int key;
std::string partype;
std::string title;
};
enum class ImageType {
SQUARE,
LOADING,
SPLASH
};
const std::string& getVersion();
const std::vector<ChampData>& getChamps();
cv::Mat getImage(const std::string& champid, ImageType imgtype = ImageType::SQUARE);
const ChampData& getBestMatchingChamp(const std::string& name);
static const ChampData EMPTYCHAMP;
protected:
std::string getCDNString() const;
QByteArray requestRaw(const std::string& url);
QJsonDocument request(const std::string& url);
std::string version;
std::vector<ChampData> champs;
private:
CURL* curl = nullptr; // the curl (does curling)
};
std::ostream& operator<<(std::ostream& str, const DataDragon::ChampData& cd);