Realm C++ SDK版本 v 2.2.0

app.hpp

1
2//
3// 版权所有 2022 Realm Inc.
4//
5// 根据 Apache 许可证 2.0 版(“许可证”)获得许可;
6// 除非符合合规,否则不得使用此文件。
7// 您可以在以下网址获取许可证副本:
8//
9// http://www.apache.org/licenses/LICENSE-2.0
10//
11// 除非适用法律要求或书面同意,否则软件
12// 根据许可证分发是按“原样”分发的,
13// 不提供任何类型的Express或暗示的保证或条件。
14// 请参阅管理权限的特定语言的许可证和
15// 许可证下的限制。
16//
18
19#ifndef CPPREALM_APP_HPP
20#define CPPREALM_APP_HPP
21
22#include <cpprealm/bson.hpp>
23#include <cpprealm/db.hpp>
24
25#include <cpprealm/internal/bridge/realm.hpp>
26#include <cpprealm/internal/bridge/sync_error.hpp>
27#include <cpprealm/internal/bridge/sync_manager.hpp>
28#include <cpprealm/internal/bridge/sync_session.hpp>
29#include <cpprealm/internal/bridge/utils.hpp>
30#include <cpprealm/networking/http.hpp>
31#include <cpprealm/networking/websocket.hpp>
32
33#include <future>
34#include <utility>
35
36命名空间域 {
37
38 using proxy_config = sync_config::proxy_config;
39 using sync_session =Internal::bridge::sync_session;
40
41 命名空间应用 {
42 class App;
43 class User;
44 struct AppError;
45 } // 命名空间 app
46 命名空间内部::bridge {
47 struct sync_error;
48 }
49
50// MARK: User
51
52// 表示来自服务器的错误状态。
53struct app_error {
54 app_error () = delete ;
55 app_error ( const app_error & other);
56 app_error & Operator=( const app_error & other) ;
57 app_error ( app_error && other);
58 app_error & Operator=( app_error && other);
59 ~app_error ();
60 app_error (realm::app::AppError&& error); //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 ;
75private :
76#ifdef CPPREALM_HAVE_GENERATED_BRIDGE_TYPES
77 internal::bridge:: 存储::AppError m_error[ 1 ];
78#else
79std::shared_ptr<realm::app::AppError> m_error;
80#endif
81 };
82
92struct 用户{
93 user () = 默认 ;
94 user ( const user &) = default ;
95 user ( user &&) = 默认 ;
96 user & 操作符=( const user &) = 默认 ;
97 user & 操作符=( user &&) = 默认 ;
98 显式 user (std::shared_ptr<app::User> user );
99 bool is_logged_in() const ;
100
104 枚举类 state : uint8_t {
105 logged_out,
106 logged_in,
已删除107
108 };
109
114 [[nodiscard]] std:: stringidentifier () 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 struct Internal::bridge::sync_manager sync_manager() const;
138
139 [[nodiscard]] db_config Flexible_sync_configuration() const ;
140
148 void log_out(std::function< void (std::Optional<app_error>)>&& callback) const ;
149
150 [[nodiscard]] std::future<void> log_out() const ;
151
152
153 [[deprecated( "Replaced by `get_custom_data()`。此方法将在未来版本中删除。" )]]
154 [[nodiscard]] std::Optional<std::string> custom_data() const ;
155
160 [[nodiscard]] std::Optional<bsoncxx::document> get_custom_data () const ;
161
170 [[deprecated( "This function 已弃用,将替换为基于BSON的 call_function API." )]]
171 void call_function ( const std::string& name, const std::string& args_ejson,
172 std::function< void (std::Optional<std::string>, std::Optional<app_error>)> 回调) const ;
173
182 [[deprecated( "This function 已弃用,将替换为基于BSON的 call_function API." )]]
183 [[nodiscard]] std::future<std::Optional<std::string>> call_function ( const std::string& name,
184 const std::string& args_ejson) const ;
185
194 void call_function ( const std::string& name, const std::vector<bsoncxx>& args_bson,
195std::function< class ="keywordtype}" class="keyword}" <bsoncxx><app_error>class="{5}}" href="{7}}">
196
204 [[nodiscard]] std::future<std::Optional<bsoncxx>> call_function ( const std::string& name, const std::vector<bsoncxx>& args_bson) const ;
205
209 void refresh_custom_user_data (std::function< void (std::Optional<app_error>)> callback);
210
214 [[nodiscard]] std::future<void> refresh_custom_user_data () const ;
215
216std::shared_ptr<app::User> m_user;
217 };
218
219bool Operator==( const user& lhs, const user& rhs);
220bool操作符!=( const user& lhs, const user& rhs);
221
222命名空间应用 {
223 struct AppCredentials;
224 }
225
226class 应用{
227public :
236 struct 配置{
238 std::string app_id
240 std::Optional<std::string> base_url
242 std::Optional<std::string>路径
243 [[已弃用( "网络选项必须通过自定义网络实现提供。" )]]
244 std::Optional<std::map<std::string, std::string>> custom_http_headers;
246 std::Optional<std:: 大量<char, 64 >> metadata_encryption_key
248 bool enable_caching = true ;
249 [[已弃用( "网络选项必须通过自定义网络实现提供。" )]]
250 std::Optional<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 ( const Configuration &);
267
268 struct 凭证{
269 静态 凭证anonymous();
270 静态 凭证api_key( const std::string& key);
271 静态 凭证facebook( const std::string& access_token);
272 静态 凭证苹果( const std::string& id_token);
273 静态 凭证google_auth_code( const std::string& auth_code);
274 静态 凭证google_id_token( const std::string& id_token);
275 静态 凭证custom( const std::string& token);
276 静态 用户名 ( const std::string& username, const std::string& password);
277 静态 凭证函数( const std::string& payload);
278 凭证();
279 凭证( const凭证& other) ;
280 凭证& 操作符= ( const凭证& other) ;
281 凭证(凭证&&其他);
282 凭证& 操作符= (凭证&& other);
283 ~credentials ();
284 private :
285 credentials (app::AppCredentials&& credentials ) noException
286 Operator app::AppCredentials() const ;
287 朋友 class 应用
288
289#ifdef CPPREALM_HAVE_GENERATED_BRIDGE_TYPES
290 Internal::bridge::storage::AppCredentials m_credentials[ 1 ];
291#else
292std::shared_ptr<app::AppCredentials> m_credentials;
293#endif
294 };
295
296 std::future<void>register_user( const std::string& 用户名, const std::string& password);
297std::future<user> login( constcredentials &credentials ) ;
298 void login( const凭证&凭证, std::function< void ( user , std::Optional<app_error>)>&& callback);
299 [[nodiscard]] Internal::bridge::sync_manager get_sync_manager() const ;
300 [[nodiscard]] std::Optional<user> get_current_user() const ;
301 void clear_cached_apps();
302 std::Optional<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 ;
318private :
319std::shared_ptr<app::App> m_app;
320 App (std::shared_ptr<app::App>&& a) : m_app(std::move(a)) { }
321 };
322
323 }
324#endif /* CPPREALM_APP_HPP */
定义: app.hpp: 226
定义: app.hpp: 236
bool enable_caching
缓存给定 App ID的应用程序及其配置。 默认。
定义: app.hpp: 248
std::option< std::string > base_url
要请求的自定义基本URL 。 如果未设立或设立为 nil,则应用 Services 的默认基本 URL...
定义: app.hpp: 240
std::option< std::string > 路径
Realm文件的自定义位置。
定义: app.hpp: 242
std::option< std:: 大量< char, 64 >> metadata_encryption_key
元数据Realm的自定义加密密钥。
定义: app.hpp: 246
std::shared_ptr< networking::sync_socket_provider >sync_socket_provider
定义: app.hpp: 261
std::shared_ptr< networking::http_transport_client > http_transport_client
定义: app.hpp: 257
std::string app_id
Atlas Device Sync应用程序的 App ID 。
定义: app.hpp: 238
定义: app.hpp: 268
定义: app.hpp: 53
定义: sync_manager.hpp: 33
定义: app.hpp: 92
std::string refresh_token() const
定义: app.cpp: 181
void call_function(const std::string &name, const std::string &args_ejson, std::function< void(std::Optional< std::string >, std::Optional< app_error >)> 回调) const
定义: app.cpp: 245
std::Optional< bsoncxx::document > get_custom_data() const
定义: app.cpp: 236
定义: app.hpp: 104
std::string access_token() const
定义: app.cpp: 170
std::future< void > refresh_custom_user_data() const
定义: app.cpp: 311
std::stringidentifier() const
定义: app.cpp: 151