summaryrefslogtreecommitdiff
path: root/discord/sticker.cpp
blob: 8e50a47ea245756b25275661b68dcf3e62ca2eb6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include "sticker.hpp"

void to_json(nlohmann::json &j, const StickerData &m) {
    j["id"] = m.ID;
    j["pack_id"] = m.PackID;
    j["name"] = m.Name;
    j["description"] = m.Description;
    JS_IF("tags", m.Tags);
    JS_IF("asset", m.AssetHash);
    JS_IF("preview_asset", m.PreviewAssetHash);
    j["format_type"] = m.FormatType;
}

void from_json(const nlohmann::json &j, StickerData &m) {
    JS_D("id", m.ID);
    JS_D("pack_id", m.PackID);
    JS_D("name", m.Name);
    JS_D("description", m.Description);
    JS_O("tags", m.Tags);
    JS_O("asset", m.AssetHash);
    JS_ON("preview_asset", m.PreviewAssetHash);
    JS_D("format_type", m.FormatType);
}

std::string StickerData::GetURL() const {
    if (!AssetHash.has_value()) return "";
    if (FormatType == StickerFormatType::PNG || FormatType == StickerFormatType::APNG)
        return "https://media.discordapp.net/stickers/" + std::to_string(ID) + "/" + *AssetHash + ".png?size=256";
    else if (FormatType == StickerFormatType::LOTTIE)
        return "https://media.discordapp.net/stickers/" + std::to_string(ID) + "/" + *AssetHash + ".json";
    return "";
}