cesium-native 0.46.0
Loading...
Searching...
No Matches
Connection.h
1#pragma once
2
3#include "AuthenticationToken.h"
4#include "CesiumCuratedContent.h"
5#include "IModel.h"
6#include "IModelMeshExport.h"
7#include "ITwin.h"
8#include "ITwinRealityData.h"
9#include "Library.h"
10#include "Profile.h"
11
12#include <CesiumAsync/AsyncSystem.h>
13#include <CesiumAsync/Future.h>
14#include <CesiumAsync/IAssetAccessor.h>
15#include <CesiumClientCommon/OAuth2PKCE.h>
16#include <CesiumITwinClient/PagedList.h>
17#include <CesiumUtility/Result.h>
18#include <CesiumUtility/Uri.h>
19
20#include <memory>
21#include <optional>
22#include <string>
23#include <vector>
24
25namespace CesiumITwinClient {
26
32public:
36 std::optional<std::string> search;
46 std::optional<std::string> orderBy;
47
54 std::optional<uint32_t> top;
55
60 std::optional<uint32_t> skip;
61
65 void addToQuery(CesiumUtility::UriQuery& uriQuery) const;
69 void addToUri(CesiumUtility::Uri& uri) const;
70};
71
75class CESIUMITWINCLIENT_API Connection {
76public:
110 const CesiumAsync::AsyncSystem& asyncSystem,
111 const std::shared_ptr<CesiumAsync::IAssetAccessor>& pAssetAccessor,
112 const std::string& friendlyApplicationName,
113 const std::string& clientID,
114 const std::string& redirectPath,
115 const std::optional<int>& redirectPort,
116 const std::vector<std::string>& scopes,
117 std::function<void(const std::string&)>&& openUrlCallback);
118
125
133 itwins(const QueryParameters& params);
134
144 imodels(const std::string& iTwinId, const QueryParameters& params);
145
154 meshExports(const std::string& iModelId, const QueryParameters& params);
155
167 realityData(const std::string& iTwinId, const QueryParameters& params);
168
178
197 const CesiumAsync::AsyncSystem& asyncSystem,
198 const std::shared_ptr<CesiumAsync::IAssetAccessor>& pAssetAccessor,
199 const AuthenticationToken& accessToken,
200 const std::optional<std::string>& refreshToken,
201 const CesiumClientCommon::OAuth2ClientOptions& clientOptions)
202 : _asyncSystem(asyncSystem),
203 _pAssetAccessor(pAssetAccessor),
204 _accessToken(accessToken),
205 _refreshToken(refreshToken),
206 _clientOptions(clientOptions) {}
207
212 const AuthenticationToken& getAccessToken() const { return _accessToken; }
218 void setAccessToken(const AuthenticationToken& authToken) {
219 _accessToken = authToken;
220 }
221
225 const std::optional<std::string>& getRefreshToken() const {
226 return _refreshToken;
227 }
231 void setRefreshToken(const std::optional<std::string>& refreshToken) {
232 _refreshToken = refreshToken;
233 }
234
235private:
237 listITwins(const std::string& url);
239 listIModels(const std::string& url);
241 listIModelMeshExports(const std::string& url);
243 listITwinRealityData(const std::string& url);
244
246 ensureValidToken();
247
248 CesiumAsync::AsyncSystem _asyncSystem;
249 std::shared_ptr<CesiumAsync::IAssetAccessor> _pAssetAccessor;
250 AuthenticationToken _accessToken;
251 std::optional<std::string> _refreshToken;
253};
254} // namespace CesiumITwinClient
A system for managing asynchronous requests and tasks.
Definition AsyncSystem.h:36
A value that will be available in the future, as produced by AsyncSystem.
Definition Promise.h:12
An authentication token obtained from the iTwin OAuth2 flow.
Represents a connection to the Bentley iTwin API.
Definition Connection.h:75
CesiumAsync::Future< CesiumUtility::Result< std::vector< CesiumCuratedContentAsset > > > cesiumCuratedContent()
Returns all available iTwin Cesium Curated Content items.
const AuthenticationToken & getAccessToken() const
Returns the AuthenticationToken object representing the parsed JWT access token.
Definition Connection.h:212
CesiumAsync::Future< CesiumUtility::Result< PagedList< IModel > > > imodels(const std::string &iTwinId, const QueryParameters &params)
Returns a list of iModels belonging to the specified iTwin.
CesiumAsync::Future< CesiumUtility::Result< UserProfile > > me()
Obtains profile information of the currently logged in user.
const std::optional< std::string > & getRefreshToken() const
Returns the refresh token used to obtain new access tokens, if any.
Definition Connection.h:225
CesiumAsync::Future< CesiumUtility::Result< PagedList< IModelMeshExport > > > meshExports(const std::string &iModelId, const QueryParameters &params)
Returns a list of mesh export tasks for the specified iModel.
CesiumAsync::Future< CesiumUtility::Result< PagedList< ITwinRealityData > > > realityData(const std::string &iTwinId, const QueryParameters &params)
Returns a list of reality data instances belonging to the specified iTwin.
CesiumAsync::Future< CesiumUtility::Result< PagedList< ITwin > > > itwins(const QueryParameters &params)
Returns a list of iTwins the current user is a member of.
Connection(const CesiumAsync::AsyncSystem &asyncSystem, const std::shared_ptr< CesiumAsync::IAssetAccessor > &pAssetAccessor, const AuthenticationToken &accessToken, const std::optional< std::string > &refreshToken, const CesiumClientCommon::OAuth2ClientOptions &clientOptions)
Creates a new Connection with the provided tokens.
Definition Connection.h:196
void setAccessToken(const AuthenticationToken &authToken)
Sets the access token that will be used for API calls.
Definition Connection.h:218
static CesiumAsync::Future< CesiumUtility::Result< Connection > > authorize(const CesiumAsync::AsyncSystem &asyncSystem, const std::shared_ptr< CesiumAsync::IAssetAccessor > &pAssetAccessor, const std::string &friendlyApplicationName, const std::string &clientID, const std::string &redirectPath, const std::optional< int > &redirectPort, const std::vector< std::string > &scopes, std::function< void(const std::string &)> &&openUrlCallback)
Authorizes access to iTwin on behalf of a user, and returns a Connection that can be used to interact...
void setRefreshToken(const std::optional< std::string > &refreshToken)
Sets the refresh token used to obtain new access tokens, if any.
Definition Connection.h:231
A class for parsing and manipulating the query string of a URI.
Definition Uri.h:337
A class for parsing and manipulating Uniform Resource Identifiers (URIs).
Definition Uri.h:22
Classes for interacting with the iTwin API.
Options used to configure the OAuth2 authentication process.
Definition OAuth2PKCE.h:36
A common set of query parameters used across list operations in the Bentley API.
Definition Connection.h:31
std::optional< std::string > search
A search string to use to limit results. Not used by all endpoints.
Definition Connection.h:36
std::optional< std::string > orderBy
Used to order the results.
Definition Connection.h:46
std::optional< uint32_t > skip
Requests that this number of items in the results will be skipped and not returned.
Definition Connection.h:60
std::optional< uint32_t > top
Limits the number of items that can be returned.
Definition Connection.h:54
void addToQuery(CesiumUtility::UriQuery &uriQuery) const
Adds the parameters in this object to the provided URI query string.
void addToUri(CesiumUtility::Uri &uri) const
Adds the parameters in this object to the query of the provided URI.
Holds the result of an operation. If the operation succeeds, it will provide a value....
Definition Result.h:16