#include "providers/twitch/twitchuser.hpp"

#include "util/rapidjson-helpers.hpp"

namespace chatterino {
namespace providers {
namespace twitch {

TwitchUser TwitchUser::fromJSON(const rapidjson::Value &value)
{
    TwitchUser user;

    if (!value.IsObject()) {
        throw std::runtime_error("JSON value is not an object");
    }

    if (!rj::getSafe(value, "_id", user.id)) {
        throw std::runtime_error("Missing ID key");
    }

    if (!rj::getSafe(value, "name", user.name)) {
        throw std::runtime_error("Missing name key");
    }

    if (!rj::getSafe(value, "display_name", user.displayName)) {
        throw std::runtime_error("Missing display name key");
    }

    return user;
}

}  // namespace twitch
}  // namespace providers
}  // namespace chatterino
