// // Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2022 // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // #include "td/telegram/ReportReason.h" #include "td/telegram/misc.h" namespace td { Result ReportReason::get_report_reason(td_api::object_ptr reason, string &&message) { if (reason == nullptr) { return Status::Error(400, "Chat report reason must be non-empty"); } if (!clean_input_string(message)) { return Status::Error(400, "Report text must be encoded in UTF-8"); } auto type = [&] { switch (reason->get_id()) { case td_api::chatReportReasonSpam::ID: return ReportReason::Type::Spam; case td_api::chatReportReasonViolence::ID: return ReportReason::Type::Violence; case td_api::chatReportReasonPornography::ID: return ReportReason::Type::Pornography; case td_api::chatReportReasonChildAbuse::ID: return ReportReason::Type::ChildAbuse; case td_api::chatReportReasonCopyright::ID: return ReportReason::Type::Copyright; case td_api::chatReportReasonUnrelatedLocation::ID: return ReportReason::Type::UnrelatedLocation; case td_api::chatReportReasonFake::ID: return ReportReason::Type::Fake; case td_api::chatReportReasonIllegalDrugs::ID: return ReportReason::Type::IllegalDrugs; case td_api::chatReportReasonPersonalDetails::ID: return ReportReason::Type::PersonalDetails; case td_api::chatReportReasonCustom::ID: return ReportReason::Type::Custom; default: UNREACHABLE(); return ReportReason::Type::Custom; } }(); return ReportReason(type, std::move(message)); } tl_object_ptr ReportReason::get_input_report_reason() const { switch (type_) { case ReportReason::Type::Spam: return make_tl_object(); case ReportReason::Type::Violence: return make_tl_object(); case ReportReason::Type::Pornography: return make_tl_object(); case ReportReason::Type::ChildAbuse: return make_tl_object(); case ReportReason::Type::Copyright: return make_tl_object(); case ReportReason::Type::UnrelatedLocation: return make_tl_object(); case ReportReason::Type::Fake: return make_tl_object(); case ReportReason::Type::IllegalDrugs: return make_tl_object(); case ReportReason::Type::PersonalDetails: return make_tl_object(); case ReportReason::Type::Custom: return make_tl_object(); default: UNREACHABLE(); return nullptr; } } StringBuilder &operator<<(StringBuilder &string_builder, const ReportReason &report_reason) { string_builder << "ReportReason"; switch (report_reason.type_) { case ReportReason::Type::Spam: return string_builder << "Spam"; case ReportReason::Type::Violence: return string_builder << "Violence"; case ReportReason::Type::Pornography: return string_builder << "Pornography"; case ReportReason::Type::ChildAbuse: return string_builder << "ChildAbuse"; case ReportReason::Type::Copyright: return string_builder << "Copyright"; case ReportReason::Type::UnrelatedLocation: return string_builder << "UnrelatedLocation"; case ReportReason::Type::Fake: return string_builder << "Fake"; case ReportReason::Type::IllegalDrugs: return string_builder << "IllegalDrugs"; case ReportReason::Type::PersonalDetails: return string_builder << "PersonalDetails"; case ReportReason::Type::Custom: return string_builder << "Custom"; default: UNREACHABLE(); } return string_builder; } } // namespace td