Skip to content
Snippets Groups Projects
image.hpp 1.94 KiB
Newer Older
#include <optional>
#if __has_include(<nlohmann/json_fwd.hpp>)
#include <nlohmann/json_fwd.hpp>
#else
#include <nlohmann/json.hpp>
#include "mtx/common.hpp"
#include "mtx/events/common.hpp"

namespace mtx {
namespace events {
namespace msg {

Nicolas Werner's avatar
Nicolas Werner committed
//! Content of `m.room.message` with msgtype `m.image`.
struct Image
{
        // A textual representation of the image. This could be
        // the alt text of the image, the filename of the image,
        // or some kind of content description for accessibility e.g. 'image attachment
        std::string body;
        // Must be 'm.image'.
        std::string msgtype;
        // The Matrix URL to the image.
        std::string url;
        // Metadata about the image referred to in `url`.
        mtx::common::ImageInfo info;
        // Encryption members. If present, they replace url.
        std::optional<crypto::EncryptedFile> file;
        //! Relates to for rich replies
Joe Donofry's avatar
Joe Donofry committed
        mtx::common::ReplyRelatesTo relates_to;
Nicolas Werner's avatar
Nicolas Werner committed
//! Content of `m.sticker`.
struct StickerImage
{
        // A textual representation of the image. This could be
        // the alt text of the image, the filename of the image,
        // or some kind of content description for accessibility e.g. 'image attachment
        std::string body;
        // The Matrix URL to the image.
        std::string url;
        // Metadata about the image referred to in `url`.
        mtx::common::ImageInfo info;
        // Encryption members. If present, they replace url.
        std::optional<crypto::EncryptedFile> file;
        //! Relates to for rich replies
Joe Donofry's avatar
Joe Donofry committed
        mtx::common::ReplyRelatesTo relates_to;
from_json(const nlohmann::json &obj, Image &content);
to_json(nlohmann::json &obj, const Image &content);
from_json(const nlohmann::json &obj, StickerImage &content);
to_json(nlohmann::json &obj, const StickerImage &content);

} // namespace msg
} // namespace events
} // namespace mtx