Realm C++ SDK Versão C++ v2.2.0

app.hpp

1
2//
3// Autores 2022 Realm Inc.
4//
5// Licenciado sob a Licença Apache, Versão 2.0 (a "Licença");
6// você não pode usar este arquivo, exceto em conformidade com a Licença.
7// Você pode obter uma cópia da Licença em
8//
9// http://www.apache.org/license/LICENSE-2.0
10//
11// A menos que exigido pela lei aplicável ou acordado por escrito, o software
12// distribuído sob a Licença é distribuído "Como está",
13// sem garantias ou condições de qualquer tipo, Express ou implícitas.
14// Consulte a Licença para obter as permissões específicas de domínio do idioma e
15// limitações da Licença.
16//
18
19#ifndef CPPREALM_APP_HPP
20#define CPPREALM_APP_HPP
21
22#include <cpprealm/bson.hpp>
23#include <cprealm/db.hpp>
24
25#include <cprealm/internal/bridge/realm.hpp>
26#include <cprealm/internal/bridge/sync_error.hpp>
27#include <cprealm/internal/bridge/sync_manager.hpp>
28#include <cprealm/internal/bridge/sync_session.hpp>
29#include <cprealm/internal/bridge/utils.hpp>
30#include <cpprealm/network/http.hpp>
31#include <cpprealm/network/websocket.hpp>
32
33#include <future>
34#include <utility>
35
36namespace Realm {
37
38 usando proxy_config = sync_config::proxy_config;
39 usando sync_session = initial::bridge::sync_session;
40
41 aplicativo namespace {
42 aplicativo de classe ;
43 usuário da classe ;
44 struct AppError;
45 }// namespace app
46 namespace interno::bridge {
47 struct sync_error;
48 }
49
50//MARK: Usuário
51
52// Representa um estado de erro do servidor.
53estrutura, estrutura app_error {
54 app_error() = delete;
55 app_error(const app_errore outros);
56 app_error& operator=(const app_error& other) ;
57 app_error(app_error&& outro);
58 app_error& operator=(app_error&& other);
59 ~app_error();
60 app_error(realm::app::AppError&& erro); //NOLINT(google-explicit-constructor)
61
62 [[nodiscard]] std::string_view message() const;
63
64 [[nodiscard]] std::string_view link_to_server_logs() const;
65
66 [[nodiscard]] bool is_json_error() const;
67
68 [[nodiscard]] bool is_service_error() const;
69
70 [[nodiscard]] bool is_http_error() const;
71
72 [[nodiscard]] bool is_custom_error() const;
73
74 [[nodiscard]] bool is_client_error() const;
75privado:
76#ifdef CPPREALM_HVE_GENERATED_BRIDGE_TYPes
77 internal::bridge::storage::AppError m_error[1];
78#else
79 std::shared_ptr<realm::app::AppError> m_error;
80#endif
81};
82
92estrutura, estrutura usuário {
93 user() = default;
94 usuário(const usuário&) = padrão;
95 usuário ( usuário &&) = padrão ;
96 user& operator=(const user&) = default;
97 user& operator=(user&&) = default;
98 explícito usuário(std::shared_ptr<app::usuário><app::User> usuário);
99 bool is_logged_in() const;
100
104 Classe de enumeração estado : uint8_t {
105 logged_out,
106 logged_in,
107 removido,
108 };
109
114 [[nodiscard]] std::string identificador() const;
115
119 [[nodiscard]] state state() const;
120
127 [[nodiscard]] std::string access_token() const;
128
135 [[nodiscard]] std::string refresh_token() const;
136
137 estrutura, estrutura initial::bridge::sync_manager sync_manager() const;
138
139 [[nodiscard]] db_config flexible_sync_configuration() const;
140
148 vazio log_out(std::function <vazio(std::opcional<app_error>)>&& chamada de resposta) const;
149
150 [[nodiscard]] std::future<void> log_out() const;
151
152
153 [[deprecated("Replaced by `get_custom_data()'. Este método será removido em uma versão futura.")]]
154 [[nodiscard]] std::optional<std::string> custom_data() const;
155
160 [[nodiscard]] std::optional<bsoncxx::document> get_custom_data() const;
161
170 [[deprecated("Esta função está obsoleta e será substituída pela API call_function baseada em BSON.")]]]
171 vazio call_function(const std::string& nome, const std::string& args_ejson,
172 std::function <null(std::opcional<std::string>, std::opcional<app_error>)> chamada de resposta de resposta ) const;
173
182 [[deprecated("Esta função está obsoleta e será substituída pela API call_function baseada em BSON.")]]]
183 [[nodiscard]] std::future <std::opcional<std::string>> call_function(const std::string& name,
184 const std::string& args_ejson) const;
185
194 vazio call_function(const std::string& name, const std::vector<bsoncxx>& args_bson,
195 std::function < null (std::opcional<bsoncxx> <app_error>< bsoncxx >, std::opcional)>chamada de resposta de resposta ) const ;
196
204 [[nodiscard]] std::future<std::optional<bsoncxx>> call_function(const std::string& name, const std::vector<bsoncxx>& args_bson) const;
205
209 vazio refresh_custom_user_data(std::function<void(std::optional<app_error>)> chamada de resposta);
210
214 [[nodiscard]] std::future<void> refresh_custom_user_data() const;
215
216 std::shared_ptr<app::User> m_user;
217};
218
219bool operator==(const user& lhs, const user& rhs);
220operador bool !=(const user& lhs, const user& rhs);
221
222aplicativo namespace {
223 estrutura AppCredentials;
224}
225
227público:
236 estrutura, estrutura configuração {
238 std::string app_id;
240 std::opcional<std::string> base_url;
242 <std::string> caminho std::opcional ;
243 [[deprecated("As opções de rede devem ser fornecidas por meio de implementações de rede personalizadas.")]]]
244 std::optional <std::map <std::string, std::string>> custom_http_headers;
246 std::opcional <std::array <char, 64>> metadata_encryption_key;
248 bool enable_cashing = true;
249 [[deprecated("As opções de rede devem ser fornecidas por meio de implementações de rede personalizadas.")]]]
250 std::opcional<sync_config::proxy_config> proxy_configuration;
257 std::shared_ptr<networking::http_transport_client> http_transport_client;
261 std::shared_ptr<networking::sync_socket_provider> sync_socket_provider;
262
263 };
264
265
266 App(configuração const &);
267
268 estrutura, estrutura credenciais {
269 estático credenciais anônimas();
270 estático credenciais api_key(const std::string& chave);
271 estático credenciais Facebook(const std::string& access_token);
272 estático credenciais apple(const std::string& ID);
273 estático credenciais google_auth_code(const std::string& auth_code);
274 estático credenciais google_ID(const std::string& ID);
275 estático credenciais personalizadas(const std::string& token);
276 estático credenciais username_password(const std::string& nome de usuário, const std::string& senha);
277 estático função de credenciais (const std::string& carga útil);
278 credenciais();
279 credenciais(credenciaisconst e outras);
280 credenciais& operador=(const credenciais& outro);
281 credenciais(credenciais&& outro);
282 credenciais& operador=(credenciais&& outro);
283 ~credentials();
284 privado:
285 credenciais (app::AppCredentials&& credenciais ) noexceto ;
286 operador app::AppCredentials() const;
287 amigo classe Aplicação;
288
289#ifdef CPPREALM_HVE_GENERATED_BRIDGE_TYPes
290 internal::bridge::storage::AppCredentials m_credentials[1];
291#else
292 std::shared_ptr<app::AppCredentials> m_credentials;
293#endif
294 };
295
296 std::future<void> subscribe_user(const std::string& username, const std::string& password);
297 std::future<user> login(const credenciais &credenciais);
298 vazio login(const credenciais& credenciais, std::function<void(usuário, std::opcional<app_error>)>&& chamada de resposta);
299 [[nodiscard]] internal::bridge::sync_manager get_sync_manager() const;
300 [[nodiscard]] std::optional<user> get_current_user() const;
301 vazio clear_cached_apps();
302 std::opcional<App> get_cached_app(const std::string& app_id, const std::optional<std::string>& base_url);
303 std::string get_base_url() const;
304
305#ifdef Realm_ENABLE_EXPERIMENTAL
314 [[nodiscard]] std::future<void> update_base_url(std::string base_url) const;
315#endif
316
317 [[nodiscard]] std::string path_for_realm(const realm::sync_config&) const;
318privado:
319 std::shared_ptr<app::App> m_app;
320 Aplicativo(std::Shared_ptr<app::App>&& a) : m_app(std::move(a)) { }
321};
322
323}
324#endif /* CPPREALM_APP_HPP */
Definição: app.hpp:226
Definição: app.hpp:236
bool enable_cashing
Armazena em cache um aplicativo e sua configuração para um determinado ID de aplicativo. Ativado por padrão.
Definição: app.hpp:248
std::opcional< std::string > base_url
Um URL de base personalizado para solicitar. Se não for definido ou definido como nulo, o URL base padrão para serviços de aplicativos...
Definição: app.hpp:240
std::opcional< std::string > caminho
Localização personalizada para arquivos Realm .
Definição: app.hpp:242
std::opcional < std::array < chart, 64 > > metadata_encryption_key
chave de criptografia personalizada para os metadados Realm.
Definição: app.hpp:246
std::shared_ptr< networking::sync_socket_provider > sync_socket_provider
Definição: app.hpp:261
std::shared_ptr< networking::http_transport_client > http_transport_client
Definição: app.hpp:257
std::string app_id
O ID do aplicativo para seu aplicativo Atlas Device Sync .
Definição: app.hpp:238
Definição: app.hpp:268
Definição: app.hpp:53
Definição: sync_manager.hpp:33
Definição: app.hpp:92
std::string refresh_token() const
Definição: app.cpp:181
vazio call_function(const std::string &name, const std::string &args_ejson, std::function< vazio(std::opcional< std::string >, std::opcional< app_error >)> chamada de resposta) const
Definição: app.cpp:245
std::opcional< bsoncxx::document > get_custom_data() const
Definição: app.cpp:236
state
Definição: app.hpp:104
std::string access_token() const
Definição: app.cpp:170
std::future< void > refresh_custom_user_data() const
Definição: app.cpp:311
std::string identificador() const
Definição: app.cpp:151