From e5400074ce81564d0d099d91c9a7b6792c012256 Mon Sep 17 00:00:00 2001 From: levlam Date: Sun, 20 Jan 2019 00:54:29 +0300 Subject: [PATCH] Move FileType to FileType.h. GitOrigin-RevId: 7e35c0f30b7755755b0583704dcfe344cc28d117 --- CMakeLists.txt | 1 + td/telegram/AnimationsManager.cpp | 1 + td/telegram/ContactsManager.cpp | 1 + td/telegram/DocumentsManager.cpp | 2 + td/telegram/InlineQueriesManager.cpp | 1 + td/telegram/MessageContent.cpp | 2 + td/telegram/MessagesManager.cpp | 2 + td/telegram/Photo.cpp | 1 + td/telegram/Photo.h | 2 +- td/telegram/SecureManager.cpp | 1 + td/telegram/SecureValue.cpp | 2 + td/telegram/StickersManager.cpp | 2 + td/telegram/Td.cpp | 20 +-- td/telegram/WallpaperManager.cpp | 1 + td/telegram/files/FileDb.h | 1 - td/telegram/files/FileDownloader.cpp | 1 + td/telegram/files/FileFromBytes.h | 1 + td/telegram/files/FileGcParameters.h | 2 +- td/telegram/files/FileGcWorker.cpp | 2 + td/telegram/files/FileGcWorker.h | 1 - td/telegram/files/FileGenerateManager.cpp | 1 + td/telegram/files/FileHashUploader.cpp | 1 + td/telegram/files/FileLoadManager.h | 1 + td/telegram/files/FileLoaderActor.h | 1 + td/telegram/files/FileLoaderUtils.h | 1 + td/telegram/files/FileLocation.h | 146 +------------------- td/telegram/files/FileManager.h | 1 + td/telegram/files/FileManager.hpp | 1 + td/telegram/files/FileStats.h | 2 +- td/telegram/files/FileStatsWorker.cpp | 2 + td/telegram/files/FileType.h | 160 ++++++++++++++++++++++ td/telegram/files/FileUploader.h | 1 + td/telegram/net/NetStatsManager.h | 2 +- 33 files changed, 206 insertions(+), 161 deletions(-) create mode 100644 td/telegram/files/FileType.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 47ac0400..f4963f1e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -501,6 +501,7 @@ set(TDLIB_SOURCE td/telegram/files/FileLoadManager.h td/telegram/files/FileLocation.h td/telegram/files/FileManager.h + td/telegram/files/FileType.h td/telegram/files/FileSourceId.h td/telegram/files/FileStats.h td/telegram/files/FileStatsWorker.h diff --git a/td/telegram/AnimationsManager.cpp b/td/telegram/AnimationsManager.cpp index be02d349..b7cf1394 100644 --- a/td/telegram/AnimationsManager.cpp +++ b/td/telegram/AnimationsManager.cpp @@ -10,6 +10,7 @@ #include "td/telegram/DialogId.h" #include "td/telegram/DocumentsManager.h" #include "td/telegram/files/FileManager.h" +#include "td/telegram/files/FileType.h" #include "td/telegram/Global.h" #include "td/telegram/logevent/LogEvent.h" #include "td/telegram/misc.h" diff --git a/td/telegram/ContactsManager.cpp b/td/telegram/ContactsManager.cpp index 34e0d557..e09ba18f 100644 --- a/td/telegram/ContactsManager.cpp +++ b/td/telegram/ContactsManager.cpp @@ -13,6 +13,7 @@ #include "td/telegram/AuthManager.h" #include "td/telegram/ConfigShared.h" #include "td/telegram/files/FileManager.h" +#include "td/telegram/files/FileType.h" #include "td/telegram/Global.h" #include "td/telegram/InlineQueriesManager.h" #include "td/telegram/logevent/LogEvent.h" diff --git a/td/telegram/DocumentsManager.cpp b/td/telegram/DocumentsManager.cpp index 5534df7f..1cbb3a31 100644 --- a/td/telegram/DocumentsManager.cpp +++ b/td/telegram/DocumentsManager.cpp @@ -9,7 +9,9 @@ #include "td/telegram/AnimationsManager.h" #include "td/telegram/AudiosManager.h" #include "td/telegram/files/FileEncryptionKey.h" +#include "td/telegram/files/FileLocation.h" #include "td/telegram/files/FileManager.h" +#include "td/telegram/files/FileType.h" #include "td/telegram/net/DcId.h" #include "td/telegram/Photo.h" #include "td/telegram/StickersManager.h" diff --git a/td/telegram/InlineQueriesManager.cpp b/td/telegram/InlineQueriesManager.cpp index bacd3169..e10a069f 100644 --- a/td/telegram/InlineQueriesManager.cpp +++ b/td/telegram/InlineQueriesManager.cpp @@ -19,6 +19,7 @@ #include "td/telegram/ContactsManager.h" #include "td/telegram/DocumentsManager.h" #include "td/telegram/files/FileManager.h" +#include "td/telegram/files/FileType.h" #include "td/telegram/Game.h" #include "td/telegram/Global.h" #include "td/telegram/InputMessageText.h" diff --git a/td/telegram/MessageContent.cpp b/td/telegram/MessageContent.cpp index ff40dbec..92e81214 100644 --- a/td/telegram/MessageContent.cpp +++ b/td/telegram/MessageContent.cpp @@ -20,7 +20,9 @@ #include "td/telegram/DocumentsManager.hpp" #include "td/telegram/files/FileId.h" #include "td/telegram/files/FileId.hpp" +#include "td/telegram/files/FileLocation.h" #include "td/telegram/files/FileManager.h" +#include "td/telegram/files/FileType.h" #include "td/telegram/Game.h" #include "td/telegram/Game.hpp" #include "td/telegram/Global.h" diff --git a/td/telegram/MessagesManager.cpp b/td/telegram/MessagesManager.cpp index a6698b7a..b2e50bb3 100644 --- a/td/telegram/MessagesManager.cpp +++ b/td/telegram/MessagesManager.cpp @@ -15,7 +15,9 @@ #include "td/telegram/DraftMessage.hpp" #include "td/telegram/FileReferenceManager.h" #include "td/telegram/files/FileId.hpp" +#include "td/telegram/files/FileLocation.h" #include "td/telegram/files/FileManager.h" +#include "td/telegram/files/FileType.h" #include "td/telegram/Global.h" #include "td/telegram/HashtagHints.h" #include "td/telegram/InlineQueriesManager.h" diff --git a/td/telegram/Photo.cpp b/td/telegram/Photo.cpp index 5f4be744..74227cab 100644 --- a/td/telegram/Photo.cpp +++ b/td/telegram/Photo.cpp @@ -10,6 +10,7 @@ #include "td/telegram/telegram_api.h" #include "td/telegram/files/FileEncryptionKey.h" +#include "td/telegram/files/FileLocation.h" #include "td/telegram/files/FileManager.h" #include "td/telegram/net/DcId.h" diff --git a/td/telegram/Photo.h b/td/telegram/Photo.h index ce34117e..d4ef3bc5 100644 --- a/td/telegram/Photo.h +++ b/td/telegram/Photo.h @@ -8,7 +8,7 @@ #include "td/telegram/DialogId.h" #include "td/telegram/files/FileId.h" -#include "td/telegram/files/FileLocation.h" +#include "td/telegram/files/FileType.h" #include "td/telegram/SecretInputMedia.h" #include "td/utils/buffer.h" diff --git a/td/telegram/SecureManager.cpp b/td/telegram/SecureManager.cpp index a755cffe..1ed9d4d7 100644 --- a/td/telegram/SecureManager.cpp +++ b/td/telegram/SecureManager.cpp @@ -10,6 +10,7 @@ #include "td/telegram/DialogId.h" #include "td/telegram/files/FileId.h" #include "td/telegram/files/FileManager.h" +#include "td/telegram/files/FileType.h" #include "td/telegram/Global.h" #include "td/telegram/misc.h" #include "td/telegram/net/NetQueryDispatcher.h" diff --git a/td/telegram/SecureValue.cpp b/td/telegram/SecureValue.cpp index aa467b4e..528b5286 100644 --- a/td/telegram/SecureValue.cpp +++ b/td/telegram/SecureValue.cpp @@ -8,7 +8,9 @@ #include "td/telegram/DialogId.h" #include "td/telegram/files/FileEncryptionKey.h" +#include "td/telegram/files/FileLocation.h" #include "td/telegram/files/FileManager.h" +#include "td/telegram/files/FileType.h" #include "td/telegram/Global.h" #include "td/telegram/misc.h" #include "td/telegram/net/DcId.h" diff --git a/td/telegram/StickersManager.cpp b/td/telegram/StickersManager.cpp index 2c91052c..b4605d3b 100644 --- a/td/telegram/StickersManager.cpp +++ b/td/telegram/StickersManager.cpp @@ -16,7 +16,9 @@ #include "td/telegram/ContactsManager.h" #include "td/telegram/DialogId.h" #include "td/telegram/DocumentsManager.h" +#include "td/telegram/files/FileLocation.h" #include "td/telegram/files/FileManager.h" +#include "td/telegram/files/FileType.h" #include "td/telegram/Global.h" #include "td/telegram/logevent/LogEvent.h" #include "td/telegram/MessagesManager.h" diff --git a/td/telegram/Td.cpp b/td/telegram/Td.cpp index 6deb2b86..2a3224b5 100644 --- a/td/telegram/Td.cpp +++ b/td/telegram/Td.cpp @@ -6,16 +6,6 @@ // #include "td/telegram/Td.h" -#include "td/telegram/net/ConnectionCreator.h" -#include "td/telegram/net/DcId.h" -#include "td/telegram/net/MtprotoHeader.h" -#include "td/telegram/net/NetQuery.h" -#include "td/telegram/net/NetQueryDelayer.h" -#include "td/telegram/net/NetQueryDispatcher.h" -#include "td/telegram/net/NetStatsManager.h" -#include "td/telegram/net/NetType.h" -#include "td/telegram/net/TempAuthKeyWatchdog.h" - #include "td/telegram/AccessRights.h" #include "td/telegram/AnimationsManager.h" #include "td/telegram/AudiosManager.h" @@ -36,6 +26,7 @@ #include "td/telegram/files/FileGcParameters.h" #include "td/telegram/files/FileId.h" #include "td/telegram/files/FileManager.h" +#include "td/telegram/files/FileType.h" #include "td/telegram/Global.h" #include "td/telegram/HashtagHints.h" #include "td/telegram/InlineQueriesManager.h" @@ -46,6 +37,15 @@ #include "td/telegram/MessageId.h" #include "td/telegram/MessagesManager.h" #include "td/telegram/misc.h" +#include "td/telegram/net/ConnectionCreator.h" +#include "td/telegram/net/DcId.h" +#include "td/telegram/net/MtprotoHeader.h" +#include "td/telegram/net/NetQuery.h" +#include "td/telegram/net/NetQueryDelayer.h" +#include "td/telegram/net/NetQueryDispatcher.h" +#include "td/telegram/net/NetStatsManager.h" +#include "td/telegram/net/NetType.h" +#include "td/telegram/net/TempAuthKeyWatchdog.h" #include "td/telegram/NotificationGroupId.h" #include "td/telegram/NotificationId.h" #include "td/telegram/NotificationManager.h" diff --git a/td/telegram/WallpaperManager.cpp b/td/telegram/WallpaperManager.cpp index 697b43b6..1c803cff 100644 --- a/td/telegram/WallpaperManager.cpp +++ b/td/telegram/WallpaperManager.cpp @@ -10,6 +10,7 @@ #include "td/telegram/telegram_api.h" #include "td/telegram/DialogId.h" +#include "td/telegram/files/FileType.h" #include "td/telegram/Global.h" #include "td/telegram/Photo.h" #include "td/telegram/Td.h" diff --git a/td/telegram/files/FileDb.h b/td/telegram/files/FileDb.h index 195ff04d..b14bdbda 100644 --- a/td/telegram/files/FileDb.h +++ b/td/telegram/files/FileDb.h @@ -8,7 +8,6 @@ #include "td/telegram/files/FileData.h" #include "td/telegram/files/FileDbId.h" -#include "td/telegram/files/FileLocation.h" #include "td/actor/PromiseFuture.h" diff --git a/td/telegram/files/FileDownloader.cpp b/td/telegram/files/FileDownloader.cpp index afb9caba..bc8710f9 100644 --- a/td/telegram/files/FileDownloader.cpp +++ b/td/telegram/files/FileDownloader.cpp @@ -9,6 +9,7 @@ #include "td/telegram/telegram_api.h" #include "td/telegram/files/FileLoaderUtils.h" +#include "td/telegram/files/FileType.h" #include "td/telegram/Global.h" #include "td/telegram/net/DcId.h" #include "td/telegram/SecureStorage.h" diff --git a/td/telegram/files/FileFromBytes.h b/td/telegram/files/FileFromBytes.h index f23255a7..1c362caa 100644 --- a/td/telegram/files/FileFromBytes.h +++ b/td/telegram/files/FileFromBytes.h @@ -10,6 +10,7 @@ #include "td/telegram/files/FileLoader.h" #include "td/telegram/files/FileLocation.h" +#include "td/telegram/files/FileType.h" #include "td/utils/buffer.h" #include "td/utils/common.h" diff --git a/td/telegram/files/FileGcParameters.h b/td/telegram/files/FileGcParameters.h index cc99e2ab..97081511 100644 --- a/td/telegram/files/FileGcParameters.h +++ b/td/telegram/files/FileGcParameters.h @@ -7,7 +7,7 @@ #pragma once #include "td/telegram/DialogId.h" -#include "td/telegram/files/FileLocation.h" +#include "td/telegram/files/FileType.h" #include "td/utils/common.h" #include "td/utils/StringBuilder.h" diff --git a/td/telegram/files/FileGcWorker.cpp b/td/telegram/files/FileGcWorker.cpp index af745ba9..e0cf388d 100644 --- a/td/telegram/files/FileGcWorker.cpp +++ b/td/telegram/files/FileGcWorker.cpp @@ -7,6 +7,8 @@ #include "td/telegram/files/FileGcWorker.h" #include "td/telegram/files/FileManager.h" +#include "td/telegram/files/FileLocation.h" +#include "td/telegram/files/FileType.h" #include "td/telegram/Global.h" #include "td/utils/format.h" diff --git a/td/telegram/files/FileGcWorker.h b/td/telegram/files/FileGcWorker.h index 4c465ffc..39dca139 100644 --- a/td/telegram/files/FileGcWorker.h +++ b/td/telegram/files/FileGcWorker.h @@ -10,7 +10,6 @@ #include "td/actor/PromiseFuture.h" #include "td/telegram/files/FileGcParameters.h" -#include "td/telegram/files/FileLocation.h" #include "td/telegram/files/FileStats.h" #include "td/utils/logging.h" diff --git a/td/telegram/files/FileGenerateManager.cpp b/td/telegram/files/FileGenerateManager.cpp index 0d4dc229..dde24be1 100644 --- a/td/telegram/files/FileGenerateManager.cpp +++ b/td/telegram/files/FileGenerateManager.cpp @@ -12,6 +12,7 @@ #include "td/telegram/files/FileId.h" #include "td/telegram/files/FileLoaderUtils.h" #include "td/telegram/files/FileManager.h" +#include "td/telegram/files/FileType.h" #include "td/telegram/Global.h" #include "td/telegram/net/NetQuery.h" #include "td/telegram/net/NetQueryDispatcher.h" diff --git a/td/telegram/files/FileHashUploader.cpp b/td/telegram/files/FileHashUploader.cpp index bf524c8d..d1c5fc84 100644 --- a/td/telegram/files/FileHashUploader.cpp +++ b/td/telegram/files/FileHashUploader.cpp @@ -8,6 +8,7 @@ #include "td/telegram/telegram_api.h" +#include "td/telegram/files/FileType.h" #include "td/telegram/Global.h" #include "td/telegram/net/DcId.h" #include "td/telegram/net/NetQueryDispatcher.h" diff --git a/td/telegram/files/FileLoadManager.h b/td/telegram/files/FileLoadManager.h index 142429ec..869d45fa 100644 --- a/td/telegram/files/FileLoadManager.h +++ b/td/telegram/files/FileLoadManager.h @@ -14,6 +14,7 @@ #include "td/telegram/files/FileFromBytes.h" #include "td/telegram/files/FileHashUploader.h" #include "td/telegram/files/FileLocation.h" +#include "td/telegram/files/FileType.h" #include "td/telegram/files/FileUploader.h" #include "td/telegram/files/ResourceManager.h" #include "td/telegram/net/DcId.h" diff --git a/td/telegram/files/FileLoaderActor.h b/td/telegram/files/FileLoaderActor.h index 80ae97cb..91dbc616 100644 --- a/td/telegram/files/FileLoaderActor.h +++ b/td/telegram/files/FileLoaderActor.h @@ -6,6 +6,7 @@ // #pragma once +#include "td/telegram/files/FileLocation.h" #include "td/telegram/files/ResourceState.h" #include "td/telegram/net/NetQuery.h" diff --git a/td/telegram/files/FileLoaderUtils.h b/td/telegram/files/FileLoaderUtils.h index ae6dd4a9..618a2eb1 100644 --- a/td/telegram/files/FileLoaderUtils.h +++ b/td/telegram/files/FileLoaderUtils.h @@ -7,6 +7,7 @@ #pragma once #include "td/telegram/files/FileLocation.h" +#include "td/telegram/files/FileType.h" #include "td/utils/buffer.h" #include "td/utils/common.h" diff --git a/td/telegram/files/FileLocation.h b/td/telegram/files/FileLocation.h index 948171fe..82ce0349 100644 --- a/td/telegram/files/FileLocation.h +++ b/td/telegram/files/FileLocation.h @@ -11,6 +11,7 @@ #include "td/telegram/files/FileBitmask.h" #include "td/telegram/files/FileEncryptionKey.h" +#include "td/telegram/files/FileType.h" #include "td/telegram/net/DcId.h" #include "td/utils/base64.h" @@ -27,151 +28,6 @@ namespace td { -enum class FileType : int8 { - Thumbnail, - ProfilePhoto, - Photo, - VoiceNote, - Video, - Document, - Encrypted, - Temp, - Sticker, - Audio, - Animation, - EncryptedThumbnail, - Wallpaper, - VideoNote, - SecureRaw, - Secure, - Size, - None -}; - -inline FileType from_td_api(const td_api::FileType &file_type) { - switch (file_type.get_id()) { - case td_api::fileTypeThumbnail::ID: - return FileType::Thumbnail; - case td_api::fileTypeProfilePhoto::ID: - return FileType::ProfilePhoto; - case td_api::fileTypePhoto::ID: - return FileType::Photo; - case td_api::fileTypeVoiceNote::ID: - return FileType::VoiceNote; - case td_api::fileTypeVideo::ID: - return FileType::Video; - case td_api::fileTypeDocument::ID: - return FileType::Document; - case td_api::fileTypeSecret::ID: - return FileType::Encrypted; - case td_api::fileTypeUnknown::ID: - return FileType::Temp; - case td_api::fileTypeSticker::ID: - return FileType::Sticker; - case td_api::fileTypeAudio::ID: - return FileType::Audio; - case td_api::fileTypeAnimation::ID: - return FileType::Animation; - case td_api::fileTypeSecretThumbnail::ID: - return FileType::EncryptedThumbnail; - case td_api::fileTypeWallpaper::ID: - return FileType::Wallpaper; - case td_api::fileTypeVideoNote::ID: - return FileType::VideoNote; - case td_api::fileTypeSecure::ID: - return FileType::Secure; - case td_api::fileTypeNone::ID: - return FileType::None; - default: - UNREACHABLE(); - return FileType::None; - } -} - -inline tl_object_ptr as_td_api(FileType file_type) { - switch (file_type) { - case FileType::Thumbnail: - return make_tl_object(); - case FileType::ProfilePhoto: - return make_tl_object(); - case FileType::Photo: - return make_tl_object(); - case FileType::VoiceNote: - return make_tl_object(); - case FileType::Video: - return make_tl_object(); - case FileType::Document: - return make_tl_object(); - case FileType::Encrypted: - return make_tl_object(); - case FileType::Temp: - return make_tl_object(); - case FileType::Sticker: - return make_tl_object(); - case FileType::Audio: - return make_tl_object(); - case FileType::Animation: - return make_tl_object(); - case FileType::EncryptedThumbnail: - return make_tl_object(); - case FileType::Wallpaper: - return make_tl_object(); - case FileType::VideoNote: - return make_tl_object(); - case FileType::Secure: - return make_tl_object(); - case FileType::SecureRaw: - UNREACHABLE(); - return make_tl_object(); - case FileType::None: - return make_tl_object(); - default: - UNREACHABLE(); - return nullptr; - } -} - -constexpr int32 file_type_size = static_cast(FileType::Size); -extern const char *file_type_name[file_type_size]; - -inline StringBuilder &operator<<(StringBuilder &string_builder, FileType file_type) { - return string_builder << file_type_name[static_cast(file_type)]; -} - -enum class FileDirType : int8 { Secure, Common }; - -inline FileDirType get_file_dir_type(FileType file_type) { - switch (file_type) { - case FileType::Thumbnail: - case FileType::ProfilePhoto: - case FileType::Encrypted: - case FileType::Sticker: - case FileType::Temp: - case FileType::Wallpaper: - case FileType::EncryptedThumbnail: - case FileType::Secure: - case FileType::SecureRaw: - return FileDirType::Secure; - default: - return FileDirType::Common; - } -} - -inline bool is_file_big(FileType file_type, int64 expected_size) { - switch (file_type) { - case FileType::Thumbnail: - case FileType::ProfilePhoto: - case FileType::Photo: - case FileType::EncryptedThumbnail: - return false; - default: - break; - } - - constexpr int64 SMALL_FILE_MAX_SIZE = 10 << 20; - return expected_size > SMALL_FILE_MAX_SIZE; -} - struct EmptyRemoteFileLocation { template void store(StorerT &storer) const { diff --git a/td/telegram/files/FileManager.h b/td/telegram/files/FileManager.h index 4d67c36e..363eaa76 100644 --- a/td/telegram/files/FileManager.h +++ b/td/telegram/files/FileManager.h @@ -18,6 +18,7 @@ #include "td/telegram/files/FileLocation.h" #include "td/telegram/files/FileSourceId.h" #include "td/telegram/files/FileStats.h" +#include "td/telegram/files/FileType.h" #include "td/telegram/Location.h" #include "td/actor/actor.h" diff --git a/td/telegram/files/FileManager.hpp b/td/telegram/files/FileManager.hpp index a072536f..b0b011ae 100644 --- a/td/telegram/files/FileManager.hpp +++ b/td/telegram/files/FileManager.hpp @@ -9,6 +9,7 @@ #include "td/telegram/DialogId.h" #include "td/telegram/files/FileEncryptionKey.h" #include "td/telegram/files/FileManager.h" +#include "td/telegram/files/FileType.h" #include "td/telegram/Version.h" #include "td/utils/logging.h" diff --git a/td/telegram/files/FileStats.h b/td/telegram/files/FileStats.h index c60be14f..8677dad5 100644 --- a/td/telegram/files/FileStats.h +++ b/td/telegram/files/FileStats.h @@ -7,7 +7,7 @@ #pragma once #include "td/telegram/DialogId.h" -#include "td/telegram/files/FileLocation.h" +#include "td/telegram/files/FileType.h" #include "td/utils/common.h" #include "td/utils/StringBuilder.h" diff --git a/td/telegram/files/FileStatsWorker.cpp b/td/telegram/files/FileStatsWorker.cpp index 01dd9965..26a41a50 100644 --- a/td/telegram/files/FileStatsWorker.cpp +++ b/td/telegram/files/FileStatsWorker.cpp @@ -10,6 +10,8 @@ #include "td/telegram/files/FileData.h" #include "td/telegram/files/FileDb.h" #include "td/telegram/files/FileLoaderUtils.h" +#include "td/telegram/files/FileLocation.h" +#include "td/telegram/files/FileType.h" #include "td/telegram/Global.h" #include "td/telegram/TdDb.h" diff --git a/td/telegram/files/FileType.h b/td/telegram/files/FileType.h new file mode 100644 index 00000000..e219fc99 --- /dev/null +++ b/td/telegram/files/FileType.h @@ -0,0 +1,160 @@ +// +// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2019 +// +// 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) +// +#pragma once + +#include "td/telegram/td_api.h" + +#include "td/utils/logging.h" + +namespace td { + +enum class FileType : int8 { + Thumbnail, + ProfilePhoto, + Photo, + VoiceNote, + Video, + Document, + Encrypted, + Temp, + Sticker, + Audio, + Animation, + EncryptedThumbnail, + Wallpaper, + VideoNote, + SecureRaw, + Secure, + Size, + None +}; + +inline FileType from_td_api(const td_api::FileType &file_type) { + switch (file_type.get_id()) { + case td_api::fileTypeThumbnail::ID: + return FileType::Thumbnail; + case td_api::fileTypeProfilePhoto::ID: + return FileType::ProfilePhoto; + case td_api::fileTypePhoto::ID: + return FileType::Photo; + case td_api::fileTypeVoiceNote::ID: + return FileType::VoiceNote; + case td_api::fileTypeVideo::ID: + return FileType::Video; + case td_api::fileTypeDocument::ID: + return FileType::Document; + case td_api::fileTypeSecret::ID: + return FileType::Encrypted; + case td_api::fileTypeUnknown::ID: + return FileType::Temp; + case td_api::fileTypeSticker::ID: + return FileType::Sticker; + case td_api::fileTypeAudio::ID: + return FileType::Audio; + case td_api::fileTypeAnimation::ID: + return FileType::Animation; + case td_api::fileTypeSecretThumbnail::ID: + return FileType::EncryptedThumbnail; + case td_api::fileTypeWallpaper::ID: + return FileType::Wallpaper; + case td_api::fileTypeVideoNote::ID: + return FileType::VideoNote; + case td_api::fileTypeSecure::ID: + return FileType::Secure; + case td_api::fileTypeNone::ID: + return FileType::None; + default: + UNREACHABLE(); + return FileType::None; + } +} + +inline tl_object_ptr as_td_api(FileType file_type) { + switch (file_type) { + case FileType::Thumbnail: + return make_tl_object(); + case FileType::ProfilePhoto: + return make_tl_object(); + case FileType::Photo: + return make_tl_object(); + case FileType::VoiceNote: + return make_tl_object(); + case FileType::Video: + return make_tl_object(); + case FileType::Document: + return make_tl_object(); + case FileType::Encrypted: + return make_tl_object(); + case FileType::Temp: + return make_tl_object(); + case FileType::Sticker: + return make_tl_object(); + case FileType::Audio: + return make_tl_object(); + case FileType::Animation: + return make_tl_object(); + case FileType::EncryptedThumbnail: + return make_tl_object(); + case FileType::Wallpaper: + return make_tl_object(); + case FileType::VideoNote: + return make_tl_object(); + case FileType::Secure: + return make_tl_object(); + case FileType::SecureRaw: + UNREACHABLE(); + return make_tl_object(); + case FileType::None: + return make_tl_object(); + default: + UNREACHABLE(); + return nullptr; + } +} + +constexpr int32 file_type_size = static_cast(FileType::Size); +extern const char *file_type_name[file_type_size]; + +inline StringBuilder &operator<<(StringBuilder &string_builder, FileType file_type) { + return string_builder << file_type_name[static_cast(file_type)]; +} + +enum class FileDirType : int8 { Secure, Common }; + +inline FileDirType get_file_dir_type(FileType file_type) { + switch (file_type) { + case FileType::Thumbnail: + case FileType::ProfilePhoto: + case FileType::Encrypted: + case FileType::Sticker: + case FileType::Temp: + case FileType::Wallpaper: + case FileType::EncryptedThumbnail: + case FileType::Secure: + case FileType::SecureRaw: + return FileDirType::Secure; + default: + return FileDirType::Common; + } +} + +inline bool is_file_big(FileType file_type, int64 expected_size) { + switch (file_type) { + case FileType::Thumbnail: + case FileType::ProfilePhoto: + case FileType::Photo: + case FileType::EncryptedThumbnail: + return false; + default: + break; + } + + constexpr int64 SMALL_FILE_MAX_SIZE = 10 << 20; + return expected_size > SMALL_FILE_MAX_SIZE; +} + +} // namespace td diff --git a/td/telegram/files/FileUploader.h b/td/telegram/files/FileUploader.h index 28159589..8d58d38d 100644 --- a/td/telegram/files/FileUploader.h +++ b/td/telegram/files/FileUploader.h @@ -9,6 +9,7 @@ #include "td/telegram/files/FileEncryptionKey.h" #include "td/telegram/files/FileLoader.h" #include "td/telegram/files/FileLocation.h" +#include "td/telegram/files/FileType.h" #include "td/utils/port/FileFd.h" #include "td/utils/Status.h" diff --git a/td/telegram/net/NetStatsManager.h b/td/telegram/net/NetStatsManager.h index cfe30043..43b08dec 100644 --- a/td/telegram/net/NetStatsManager.h +++ b/td/telegram/net/NetStatsManager.h @@ -11,7 +11,7 @@ #include "td/telegram/td_api.h" -#include "td/telegram/files/FileLocation.h" +#include "td/telegram/files/FileType.h" #include "td/telegram/net/NetType.h" #include "td/net/NetStats.h"