cesium-native  0.41.0
Connection.h
1 #pragma once
2 
3 #include "ApplicationData.h"
4 #include "Assets.h"
5 #include "Defaults.h"
6 #include "Profile.h"
7 #include "Response.h"
8 #include "Token.h"
9 #include "TokenList.h"
10 
11 #include <CesiumAsync/AsyncSystem.h>
12 #include <CesiumAsync/IAssetAccessor.h>
13 #include <CesiumAsync/Library.h>
14 
15 #include <cstdint>
16 
17 namespace CesiumIonClient {
18 
22 enum class SortOrder { Ascending, Descending };
23 
35  std::optional<int32_t> limit;
36 
40  std::optional<int32_t> page;
41 
47  std::optional<std::string> search;
48 
53  std::optional<std::string> sortBy;
54 
59  std::optional<SortOrder> sortOrder;
60 };
61 
66 class CESIUMASYNC_API Connection {
67 public:
101  const CesiumAsync::AsyncSystem& asyncSystem,
102  const std::shared_ptr<CesiumAsync::IAssetAccessor>& pAssetAccessor,
103  const std::string& friendlyApplicationName,
104  int64_t clientID,
105  const std::string& redirectPath,
106  const std::vector<std::string>& scopes,
107  std::function<void(const std::string&)>&& openUrlCallback,
108  const CesiumIonClient::ApplicationData& appData,
109  const std::string& ionApiUrl = "https://api.cesium.com/",
110  const std::string& ionAuthorizeUrl = "https://ion.cesium.com/oauth");
111 
118  const CesiumAsync::AsyncSystem& asyncSystem,
119  const std::shared_ptr<CesiumAsync::IAssetAccessor>& pAssetAccessor,
120  const std::string& apiUrl = "https://api.cesium.com");
121 
123  const CesiumAsync::AsyncSystem& asyncSystem,
124  const std::shared_ptr<CesiumAsync::IAssetAccessor>& pAssetAccessor,
125  const std::string& ionUrl);
126 
138  const CesiumAsync::AsyncSystem& asyncSystem,
139  const std::shared_ptr<CesiumAsync::IAssetAccessor>& pAssetAccessor,
140  const std::string& accessToken,
141  const CesiumIonClient::ApplicationData& appData,
142  const std::string& apiUrl = "https://api.cesium.com");
143 
147  const CesiumAsync::AsyncSystem& getAsyncSystem() const noexcept {
148  return this->_asyncSystem;
149  }
150 
155  const std::shared_ptr<CesiumAsync::IAssetAccessor>&
156  getAssetAccessor() const noexcept {
157  return this->_pAssetAccessor;
158  }
159 
163  const std::string& getAccessToken() const noexcept {
164  return this->_accessToken;
165  }
166 
170  const std::string& getApiUrl() const noexcept { return this->_apiUrl; }
171 
182 
193 
200 
212  tokens(const ListTokensOptions& options = {}) const;
213 
221 
228  CesiumAsync::Future<Response<Token>> token(const std::string& tokenID) const;
229 
241  nextPage(const Response<TokenList>& currentPage) const;
242 
254  previousPage(const Response<TokenList>& currentPage) const;
255 
268  const std::string& name,
269  const std::vector<std::string>& scopes,
270  const std::optional<std::vector<int64_t>>& assetIds = std::nullopt,
271  const std::optional<std::vector<std::string>>& allowedUrls =
272  std::nullopt) const;
273 
288  const std::string& tokenID,
289  const std::string& newName,
290  const std::optional<std::vector<int64_t>>& newAssetIDs,
291  const std::vector<std::string>& newScopes,
292  const std::optional<std::vector<std::string>>& newAllowedUrls) const;
293 
301  static std::optional<std::string> getIdFromToken(const std::string& token);
302 
303 private:
304  static CesiumAsync::Future<Connection> completeTokenExchange(
305  const CesiumAsync::AsyncSystem& asyncSystem,
306  const std::shared_ptr<CesiumAsync::IAssetAccessor>& pAssetAccessor,
307  int64_t clientID,
308  const std::string& ionApiUrl,
309  const CesiumIonClient::ApplicationData& appData,
310  const std::string& code,
311  const std::string& redirectUrl,
312  const std::string& codeVerifier);
313 
314  CesiumAsync::Future<Response<TokenList>> tokens(const std::string& url) const;
315 
316  CesiumAsync::AsyncSystem _asyncSystem;
317  std::shared_ptr<CesiumAsync::IAssetAccessor> _pAssetAccessor;
318  std::string _accessToken;
319  std::string _apiUrl;
321 };
322 } // namespace CesiumIonClient
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
A connection to Cesium ion that can be used to interact with it via its REST API.
Definition: Connection.h:66
const std::string & getApiUrl() const noexcept
Gets the Cesium ion API base URL.
Definition: Connection.h:170
static CesiumAsync::Future< Connection > authorize(const CesiumAsync::AsyncSystem &asyncSystem, const std::shared_ptr< CesiumAsync::IAssetAccessor > &pAssetAccessor, const std::string &friendlyApplicationName, int64_t clientID, const std::string &redirectPath, const std::vector< std::string > &scopes, std::function< void(const std::string &)> &&openUrlCallback, const CesiumIonClient::ApplicationData &appData, const std::string &ionApiUrl="https://api.cesium.com/", const std::string &ionAuthorizeUrl="https://ion.cesium.com/oauth")
Authorizes access to Cesium ion on behalf of a user, and returns a Connection that can be used to int...
Connection(const CesiumAsync::AsyncSystem &asyncSystem, const std::shared_ptr< CesiumAsync::IAssetAccessor > &pAssetAccessor, const std::string &accessToken, const CesiumIonClient::ApplicationData &appData, const std::string &apiUrl="https://api.cesium.com")
Creates a connection to Cesium ion using the provided access token.
const std::shared_ptr< CesiumAsync::IAssetAccessor > & getAssetAccessor() const noexcept
Gets the interface used by this connection to interact with the Cesium ion REST API.
Definition: Connection.h:156
CesiumAsync::Future< Response< TokenList > > tokens(const ListTokensOptions &options={}) const
Invokes the "List tokens" service to get the list of available tokens.
CesiumAsync::Future< Response< TokenList > > previousPage(const Response< TokenList > &currentPage) const
Gets the previous page of results from the "List tokens" service.
CesiumAsync::Future< Response< Token > > token(const std::string &tokenID) const
Gets details of the token with the given ID.
static std::optional< std::string > getIdFromToken(const std::string &token)
Decodes a token ID from a token.
static CesiumAsync::Future< Response< ApplicationData > > appData(const CesiumAsync::AsyncSystem &asyncSystem, const std::shared_ptr< CesiumAsync::IAssetAccessor > &pAssetAccessor, const std::string &apiUrl="https://api.cesium.com")
Retrieves information about the ion API server.
CesiumAsync::Future< Response< Assets > > assets() const
Gets the list of available assets.
CesiumAsync::Future< Response< Token > > createToken(const std::string &name, const std::vector< std::string > &scopes, const std::optional< std::vector< int64_t >> &assetIds=std::nullopt, const std::optional< std::vector< std::string >> &allowedUrls=std::nullopt) const
Creates a new token.
const CesiumAsync::AsyncSystem & getAsyncSystem() const noexcept
Gets the async system used by this connection to do work in threads.
Definition: Connection.h:147
const std::string & getAccessToken() const noexcept
Gets the access token used by this connection.
Definition: Connection.h:163
CesiumAsync::Future< Response< Asset > > asset(int64_t assetID) const
Gets details of the asset with the given ID.
CesiumAsync::Future< Response< NoValue > > modifyToken(const std::string &tokenID, const std::string &newName, const std::optional< std::vector< int64_t >> &newAssetIDs, const std::vector< std::string > &newScopes, const std::optional< std::vector< std::string >> &newAllowedUrls) const
Modifies a token.
CesiumAsync::Future< Response< Profile > > me() const
Retrieves profile information for the access token currently being used to make API calls.
CesiumAsync::Future< Response< TokenList > > nextPage(const Response< TokenList > &currentPage) const
Gets the next page of results from the "List tokens" service.
CesiumAsync::Future< Response< Defaults > > defaults() const
Retrieves default imagery, terrain and building assets along with quick add assets that can be useful...
Classes for working with Cesium ion clients.
SortOrder
Whether sorted results should be ascending or descending.
Definition: Connection.h:22
Data retrieved from the Cesium ion server via an "appData" request from Cesium ion....
Options to be passed to Connection::tokens.
Definition: Connection.h:27
std::optional< std::string > search
One or more keywords separated by whitespace by which to filter the list of tokens....
Definition: Connection.h:47
std::optional< int32_t > page
The page number, where the first page of results is page 1 (not 0).
Definition: Connection.h:40
std::optional< std::string > sortBy
The property by which to sort results. Valid values are "NAME" and "LAST_USED".
Definition: Connection.h:53
std::optional< int32_t > limit
The maximum number of tokens to return in a single page.
Definition: Connection.h:35
std::optional< SortOrder > sortOrder
The property by which to sort results. Valid values are "NAME" and "LAST_USED".
Definition: Connection.h:59
A response from Cesium ion.
Definition: Response.h:19