Improvements to getting motd and featured data
This commit is contained in:
parent
ef989ae192
commit
161d3105d1
@ -16,7 +16,33 @@ namespace demonware
|
|||||||
{
|
{
|
||||||
auto reply = server->create_reply(this->task_id());
|
auto reply = server->create_reply(this->task_id());
|
||||||
|
|
||||||
const auto motd_content = utils::http::get_data("https://h1.gg/data/motd.json");
|
const int timeout = 7; // seconds
|
||||||
|
|
||||||
|
std::optional<utils::http::result> motd_content;
|
||||||
|
std::optional<utils::http::result> featured_content;
|
||||||
|
std::optional<utils::http::result> featured2_content;
|
||||||
|
|
||||||
|
auto get_motd = [&motd_content]()
|
||||||
|
{
|
||||||
|
motd_content = utils::http::get_data("https://h1.gg/data/motd.json", {}, {}, {}, timeout);
|
||||||
|
};
|
||||||
|
auto get_featured = [&featured_content]()
|
||||||
|
{
|
||||||
|
featured_content = utils::http::get_data("https://h1.gg/data/featured.json", {}, {}, {}, timeout);
|
||||||
|
};
|
||||||
|
auto get_featured2 = [&featured2_content]()
|
||||||
|
{
|
||||||
|
featured2_content = utils::http::get_data("https://h1.gg/data/featured2.json", {}, {}, {}, timeout);
|
||||||
|
};
|
||||||
|
|
||||||
|
std::thread get_motd_thread(get_motd);
|
||||||
|
std::thread get_featured_thread(get_featured);
|
||||||
|
std::thread get_featured2_thread(get_featured2);
|
||||||
|
|
||||||
|
get_motd_thread.join();
|
||||||
|
get_featured_thread.join();
|
||||||
|
get_featured2_thread.join();
|
||||||
|
|
||||||
if (motd_content.has_value())
|
if (motd_content.has_value())
|
||||||
{
|
{
|
||||||
const auto motd = new bdMarketingMessage;
|
const auto motd = new bdMarketingMessage;
|
||||||
@ -27,7 +53,6 @@ namespace demonware
|
|||||||
reply->add(motd);
|
reply->add(motd);
|
||||||
}
|
}
|
||||||
|
|
||||||
const auto featured_content = utils::http::get_data("https://h1.gg/data/featured.json");
|
|
||||||
if (featured_content.has_value())
|
if (featured_content.has_value())
|
||||||
{
|
{
|
||||||
const auto featured = new bdMarketingMessage;
|
const auto featured = new bdMarketingMessage;
|
||||||
@ -38,7 +63,6 @@ namespace demonware
|
|||||||
reply->add(featured);
|
reply->add(featured);
|
||||||
}
|
}
|
||||||
|
|
||||||
const auto featured2_content = utils::http::get_data("https://h1.gg/data/featured2.json");
|
|
||||||
if (featured2_content.has_value())
|
if (featured2_content.has_value())
|
||||||
{
|
{
|
||||||
const auto featured2 = new bdMarketingMessage;
|
const auto featured2 = new bdMarketingMessage;
|
||||||
|
@ -43,7 +43,7 @@ namespace utils::http
|
|||||||
}
|
}
|
||||||
|
|
||||||
std::optional<result> get_data(const std::string& url, const std::string& fields,
|
std::optional<result> get_data(const std::string& url, const std::string& fields,
|
||||||
const headers& headers, const std::function<int(size_t, size_t)>& callback)
|
const headers& headers, const std::function<int(size_t, size_t)>& callback, int timeout)
|
||||||
{
|
{
|
||||||
curl_slist* header_list = nullptr;
|
curl_slist* header_list = nullptr;
|
||||||
auto* curl = curl_easy_init();
|
auto* curl = curl_easy_init();
|
||||||
@ -77,7 +77,7 @@ namespace utils::http
|
|||||||
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1);
|
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1);
|
||||||
curl_easy_setopt(curl, CURLOPT_NOPROGRESS, 0);
|
curl_easy_setopt(curl, CURLOPT_NOPROGRESS, 0);
|
||||||
|
|
||||||
curl_easy_setopt(curl, CURLOPT_TIMEOUT, 2);
|
curl_easy_setopt(curl, CURLOPT_TIMEOUT, timeout);
|
||||||
|
|
||||||
if (!fields.empty())
|
if (!fields.empty())
|
||||||
{
|
{
|
||||||
|
@ -19,7 +19,7 @@ namespace utils::http
|
|||||||
using headers = std::unordered_map<std::string, std::string>;
|
using headers = std::unordered_map<std::string, std::string>;
|
||||||
|
|
||||||
std::optional<result> get_data(const std::string& url, const std::string& fields = {},
|
std::optional<result> get_data(const std::string& url, const std::string& fields = {},
|
||||||
const headers& headers = {}, const std::function<int(size_t, size_t)>& callback = {});
|
const headers& headers = {}, const std::function<int(size_t, size_t)>& callback = {}, int timeout = 0);
|
||||||
std::future<std::optional<result>> get_data_async(const std::string& url, const std::string& fields = {},
|
std::future<std::optional<result>> get_data_async(const std::string& url, const std::string& fields = {},
|
||||||
const headers& headers = {}, const std::function<int(size_t, size_t)>& callback = {});
|
const headers& headers = {}, const std::function<int(size_t, size_t)>& callback = {});
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user