diff options
Diffstat (limited to 'protocols/Telegram/tdlib/td/td/telegram/AuthManager.hpp')
-rw-r--r-- | protocols/Telegram/tdlib/td/td/telegram/AuthManager.hpp | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/protocols/Telegram/tdlib/td/td/telegram/AuthManager.hpp b/protocols/Telegram/tdlib/td/td/telegram/AuthManager.hpp new file mode 100644 index 0000000000..89027abd61 --- /dev/null +++ b/protocols/Telegram/tdlib/td/td/telegram/AuthManager.hpp @@ -0,0 +1,100 @@ +// +// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2018 +// +// 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/AuthManager.h" + +#include "td/utils/tl_helpers.h" + +namespace td { +template <class T> +void SendCodeHelper::AuthenticationCodeInfo::store(T &storer) const { + using td::store; + store(type, storer); + store(length, storer); + store(pattern, storer); +} +template <class T> +void SendCodeHelper::AuthenticationCodeInfo::parse(T &parser) { + using td::parse; + parse(type, parser); + parse(length, parser); + parse(pattern, parser); +} + +template <class T> +void SendCodeHelper::store(T &storer) const { + using td::store; + store(phone_number_, storer); + store(phone_registered_, storer); + store(phone_code_hash_, storer); + store(sent_code_info_, storer); + store(next_code_info_, storer); + store(next_code_timestamp_, storer); +} + +template <class T> +void SendCodeHelper::parse(T &parser) { + using td::parse; + parse(phone_number_, parser); + parse(phone_registered_, parser); + parse(phone_code_hash_, parser); + parse(sent_code_info_, parser); + parse(next_code_info_, parser); + parse(next_code_timestamp_, parser); +} +template <class T> +void AuthManager::WaitPasswordState::store(T &storer) const { + using td::store; + store(current_salt_, storer); + store(new_salt_, storer); + store(hint_, storer); + store(has_recovery_, storer); + store(email_address_pattern_, storer); +} + +template <class T> +void AuthManager::WaitPasswordState::parse(T &parser) { + using td::parse; + parse(current_salt_, parser); + parse(new_salt_, parser); + parse(hint_, parser); + parse(has_recovery_, parser); + parse(email_address_pattern_, parser); +} + +template <class T> +void AuthManager::DbState::store(T &storer) const { + using td::store; + store(state_, storer); + store(api_id_, storer); + store(api_hash_, storer); + store(state_timestamp_, storer); + + if (state_ == State::WaitCode) { + store(send_code_helper_, storer); + } else if (state_ == State::WaitPassword) { + store(wait_password_state_, storer); + } else { + UNREACHABLE(); + } +} +template <class T> +void AuthManager::DbState::parse(T &parser) { + using td::parse; + parse(state_, parser); + parse(api_id_, parser); + parse(api_hash_, parser); + parse(state_timestamp_, parser); + + if (state_ == State::WaitCode) { + parse(send_code_helper_, parser); + } else if (state_ == State::WaitPassword) { + parse(wait_password_state_, parser); + } else { + parser.set_error(PSTRING() << "Unexpected " << tag("state", static_cast<int32>(state_))); + } +} +} // namespace td |