cesium-native 0.50.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/GeospatialFeatureCollection.h>
17#include <CesiumITwinClient/PagedList.h>
18#include <CesiumUtility/Result.h>
19#include <CesiumUtility/Uri.h>
20#include <CesiumVectorData/GeoJsonObjectTypes.h>
21
22#include <memory>
23#include <optional>
24#include <string>
25#include <vector>
26
27namespace CesiumITwinClient {
28
34public:
38 std::optional<std::string> search;
48 std::optional<std::string> orderBy;
49
56 std::optional<uint32_t> top;
57
62 std::optional<uint32_t> skip;
63
67 void addToQuery(CesiumUtility::UriQuery& uriQuery) const;
71 void addToUri(CesiumUtility::Uri& uri) const;
72};
73
77class CESIUMITWINCLIENT_API Connection {
78public:
112 const CesiumAsync::AsyncSystem& asyncSystem,
113 const std::shared_ptr<CesiumAsync::IAssetAccessor>& pAssetAccessor,
114 const std::string& friendlyApplicationName,
115 const std::string& clientID,
116 const std::string& redirectPath,
117 const std::optional<int>& redirectPort,
118 const std::vector<std::string>& scopes,
119 std::function<void(const std::string&)>&& openUrlCallback);
120
127
135 itwins(const QueryParameters& params);
136
146 imodels(const std::string& iTwinId, const QueryParameters& params);
147
156 meshExports(const std::string& iModelId, const QueryParameters& params);
157
169 realityData(const std::string& iTwinId, const QueryParameters& params);
170
180
191 geospatialFeatureCollections(const std::string& iTwinId);
192
203 const std::string& iTwinId,
204 const std::string& collectionId,
205 uint32_t limit = 10000);
206
225 const CesiumAsync::AsyncSystem& asyncSystem,
226 const std::shared_ptr<CesiumAsync::IAssetAccessor>& pAssetAccessor,
227 const AuthenticationToken& authenticationToken,
228 const std::optional<std::string>& refreshToken,
229 const CesiumClientCommon::OAuth2ClientOptions& clientOptions)
230 : _asyncSystem(asyncSystem),
231 _pAssetAccessor(pAssetAccessor),
232 _authenticationToken(authenticationToken),
233 _refreshToken(refreshToken),
234 _clientOptions(clientOptions) {}
235
241 return this->_authenticationToken;
242 }
243
250 this->_authenticationToken = authToken;
251 }
252
256 const std::optional<std::string>& getRefreshToken() const {
257 return this->_refreshToken;
258 }
259
263 void setRefreshToken(const std::optional<std::string>& refreshToken) {
264 this->_refreshToken = refreshToken;
265 }
266
267private:
269 listITwins(const std::string& url);
271 listIModels(const std::string& url);
273 listIModelMeshExports(const std::string& url);
275 listITwinRealityData(const std::string& url);
278 listGeospatialFeatures(const std::string& url);
279
281
282 CesiumAsync::AsyncSystem _asyncSystem;
283 std::shared_ptr<CesiumAsync::IAssetAccessor> _pAssetAccessor;
284 AuthenticationToken _authenticationToken;
285 std::optional<std::string> _refreshToken;
287};
288} // 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 Future.h:29
An authentication token obtained from the iTwin OAuth2 flow.
CesiumAsync::Future< CesiumUtility::Result< std::vector< CesiumCuratedContentAsset > > > cesiumCuratedContent()
Returns all available iTwin Cesium Curated Content items.
CesiumAsync::Future< CesiumUtility::Result< PagedList< CesiumVectorData::GeoJsonFeature > > > geospatialFeatures(const std::string &iTwinId, const std::string &collectionId, uint32_t limit=10000)
Returns one or more pages of GeoJSON features in this iTwin.
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:256
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< std::vector< GeospatialFeatureCollection > > > geospatialFeatureCollections(const std::string &iTwinId)
Retrieve all Collections (Feature Classes) that contain features within an iTwin.
CesiumAsync::Future< CesiumUtility::Result< PagedList< ITwin > > > itwins(const QueryParameters &params)
Returns a list of iTwins the current user is a member of.
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...
Connection(const CesiumAsync::AsyncSystem &asyncSystem, const std::shared_ptr< CesiumAsync::IAssetAccessor > &pAssetAccessor, const AuthenticationToken &authenticationToken, const std::optional< std::string > &refreshToken, const CesiumClientCommon::OAuth2ClientOptions &clientOptions)
Creates a new Connection with the provided tokens.
Definition Connection.h:224
const AuthenticationToken & getAuthenticationToken() const
Returns the AuthenticationToken object representing the parsed JWT access or share token.
Definition Connection.h:240
void setRefreshToken(const std::optional< std::string > &refreshToken)
Sets the refresh token used to obtain new access tokens, if any.
Definition Connection.h:263
void setAuthenticationToken(const AuthenticationToken &authToken)
Sets the access or share token that will be used for API calls.
Definition Connection.h:249
A class for parsing and manipulating the query string of a URI.
Definition Uri.h:367
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:33
std::optional< std::string > search
A search string to use to limit results. Not used by all endpoints.
Definition Connection.h:38
std::optional< std::string > orderBy
Used to order the results.
Definition Connection.h:48
std::optional< uint32_t > skip
Requests that this number of items in the results will be skipped and not returned.
Definition Connection.h:62
std::optional< uint32_t > top
Limits the number of items that can be returned.
Definition Connection.h:56
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