Added tooltip to links via BTTV API.

This commit is contained in:
23rd
2018-08-24 12:56:42 +03:00
parent fec89a4807
commit 5253ab3f85
8 changed files with 76 additions and 1 deletions
+39
View File
@@ -0,0 +1,39 @@
#include "providers/bttv/BttvTooltip.hpp"
#include "common/Common.hpp"
#include "common/NetworkRequest.hpp"
#include <QString>
namespace chatterino {
void BttvTooltip::getUrlTooltip(const QString url,
std::function<void(QString)> successCallback)
{
QString requestUrl("https://api.betterttv.net/2/link_resolver/" +
QUrl::toPercentEncoding(url, "", "/:"));
NetworkRequest request(requestUrl);
request.setCaller(QThread::currentThread());
request.setTimeout(30000);
request.onSuccess([successCallback](auto result) mutable -> Outcome {
auto root = result.parseJson();
/* When tooltip is not a string, in this case,
onError runs before onSuccess,
so there is no point in doing "if" condition. */
auto tooltip = root.value("tooltip").toString();
successCallback(QUrl::fromPercentEncoding(tooltip.toUtf8()));
return Success;
});
request.onError([successCallback](auto result) {
successCallback("No link info found");
return true;
});
request.execute();
}
} // namespace chatterino
+17
View File
@@ -0,0 +1,17 @@
#pragma once
#include <QString>
#include <functional>
namespace chatterino {
class BttvTooltip
{
public:
static void getUrlTooltip(const QString url,
std::function<void(QString)> callback);
private:
};
} // namespace chatterino