// WARNING: This file is automatically generated. Any changes will be lost. #include "twitch-eventsub-ws/chrono.hpp" // IWYU pragma: keep #include "twitch-eventsub-ws/detail/errors.hpp" #include "twitch-eventsub-ws/detail/variant.hpp" // IWYU pragma: keep #include "twitch-eventsub-ws/payloads/channel-ban-v1.hpp" #include namespace chatterino::eventsub::lib::payload::channel_ban::v1 { boost::json::result_for::type tag_invoke( boost::json::try_value_to_tag /* tag */, const boost::json::value &jvRoot) { if (!jvRoot.is_object()) { EVENTSUB_BAIL_HERE(error::Kind::ExpectedObject); } const auto &root = jvRoot.get_object(); const auto *jvbroadcasterUserID = root.if_contains("broadcaster_user_id"); if (jvbroadcasterUserID == nullptr) { EVENTSUB_BAIL_HERE(error::Kind::FieldMissing); } auto broadcasterUserID = boost::json::try_value_to(*jvbroadcasterUserID); if (broadcasterUserID.has_error()) { return broadcasterUserID.error(); } const auto *jvbroadcasterUserLogin = root.if_contains("broadcaster_user_login"); if (jvbroadcasterUserLogin == nullptr) { EVENTSUB_BAIL_HERE(error::Kind::FieldMissing); } auto broadcasterUserLogin = boost::json::try_value_to(*jvbroadcasterUserLogin); if (broadcasterUserLogin.has_error()) { return broadcasterUserLogin.error(); } const auto *jvbroadcasterUserName = root.if_contains("broadcaster_user_name"); if (jvbroadcasterUserName == nullptr) { EVENTSUB_BAIL_HERE(error::Kind::FieldMissing); } auto broadcasterUserName = boost::json::try_value_to(*jvbroadcasterUserName); if (broadcasterUserName.has_error()) { return broadcasterUserName.error(); } const auto *jvmoderatorUserID = root.if_contains("moderator_user_id"); if (jvmoderatorUserID == nullptr) { EVENTSUB_BAIL_HERE(error::Kind::FieldMissing); } auto moderatorUserID = boost::json::try_value_to(*jvmoderatorUserID); if (moderatorUserID.has_error()) { return moderatorUserID.error(); } const auto *jvmoderatorUserLogin = root.if_contains("moderator_user_login"); if (jvmoderatorUserLogin == nullptr) { EVENTSUB_BAIL_HERE(error::Kind::FieldMissing); } auto moderatorUserLogin = boost::json::try_value_to(*jvmoderatorUserLogin); if (moderatorUserLogin.has_error()) { return moderatorUserLogin.error(); } const auto *jvmoderatorUserName = root.if_contains("moderator_user_name"); if (jvmoderatorUserName == nullptr) { EVENTSUB_BAIL_HERE(error::Kind::FieldMissing); } auto moderatorUserName = boost::json::try_value_to(*jvmoderatorUserName); if (moderatorUserName.has_error()) { return moderatorUserName.error(); } const auto *jvuserID = root.if_contains("user_id"); if (jvuserID == nullptr) { EVENTSUB_BAIL_HERE(error::Kind::FieldMissing); } auto userID = boost::json::try_value_to(*jvuserID); if (userID.has_error()) { return userID.error(); } const auto *jvuserLogin = root.if_contains("user_login"); if (jvuserLogin == nullptr) { EVENTSUB_BAIL_HERE(error::Kind::FieldMissing); } auto userLogin = boost::json::try_value_to(*jvuserLogin); if (userLogin.has_error()) { return userLogin.error(); } const auto *jvuserName = root.if_contains("user_name"); if (jvuserName == nullptr) { EVENTSUB_BAIL_HERE(error::Kind::FieldMissing); } auto userName = boost::json::try_value_to(*jvuserName); if (userName.has_error()) { return userName.error(); } const auto *jvreason = root.if_contains("reason"); if (jvreason == nullptr) { EVENTSUB_BAIL_HERE(error::Kind::FieldMissing); } auto reason = boost::json::try_value_to(*jvreason); if (reason.has_error()) { return reason.error(); } static_assert(std::is_trivially_copyable_v().isPermanent)>>); const auto *jvisPermanent = root.if_contains("is_permanent"); if (jvisPermanent == nullptr) { EVENTSUB_BAIL_HERE(error::Kind::FieldMissing); } auto isPermanent = boost::json::try_value_to(*jvisPermanent); if (isPermanent.has_error()) { return isPermanent.error(); } static_assert( std::is_trivially_copyable_v< std::remove_reference_t().bannedAt)>>); const auto *jvbannedAt = root.if_contains("banned_at"); if (jvbannedAt == nullptr) { EVENTSUB_BAIL_HERE(error::Kind::FieldMissing); } auto bannedAt = boost::json::try_value_to( *jvbannedAt, AsISO8601()); if (bannedAt.has_error()) { return bannedAt.error(); } static_assert( std::is_trivially_copyable_v< std::remove_reference_t().endsAt)>>); std::optional endsAt = std::nullopt; const auto *jvendsAt = root.if_contains("ends_at"); if (jvendsAt != nullptr && !jvendsAt->is_null()) { auto tendsAt = boost::json::try_value_to( *jvendsAt, AsISO8601()); if (tendsAt.has_error()) { return tendsAt.error(); } endsAt = tendsAt.value(); } return Event{ .broadcasterUserID = std::move(broadcasterUserID.value()), .broadcasterUserLogin = std::move(broadcasterUserLogin.value()), .broadcasterUserName = std::move(broadcasterUserName.value()), .moderatorUserID = std::move(moderatorUserID.value()), .moderatorUserLogin = std::move(moderatorUserLogin.value()), .moderatorUserName = std::move(moderatorUserName.value()), .userID = std::move(userID.value()), .userLogin = std::move(userLogin.value()), .userName = std::move(userName.value()), .reason = std::move(reason.value()), .isPermanent = isPermanent.value(), .bannedAt = bannedAt.value(), .endsAt = endsAt, }; } boost::json::result_for::type tag_invoke( boost::json::try_value_to_tag /* tag */, const boost::json::value &jvRoot) { if (!jvRoot.is_object()) { EVENTSUB_BAIL_HERE(error::Kind::ExpectedObject); } const auto &root = jvRoot.get_object(); const auto *jvsubscription = root.if_contains("subscription"); if (jvsubscription == nullptr) { EVENTSUB_BAIL_HERE(error::Kind::FieldMissing); } auto subscription = boost::json::try_value_to(*jvsubscription); if (subscription.has_error()) { return subscription.error(); } const auto *jvevent = root.if_contains("event"); if (jvevent == nullptr) { EVENTSUB_BAIL_HERE(error::Kind::FieldMissing); } auto event = boost::json::try_value_to(*jvevent); if (event.has_error()) { return event.error(); } return Payload{ .subscription = std::move(subscription.value()), .event = std::move(event.value()), }; } } // namespace chatterino::eventsub::lib::payload::channel_ban::v1