Files

63 lines
1.6 KiB
C++

#pragma once
#include <string>
namespace CesiumIonClient {
/**
* @brief An enumeration representing the values of the `authenticationMode`
* property in the `appData` response.
*/
enum AuthenticationMode {
/**
* Authentication using OAuth with an ion.cesium.com account.
*/
CesiumIon,
/**
* Authentication using OAuth with Cesium ion Self-Hosted.
* On the server, this uses the Security Assertion Markup Language (SAML) to
* communicate with another authentication server.
* From our perspective, we can treat this the same as {@link AuthenticationMode::CesiumIon}.
*/
Saml,
/**
* A Cesium ion Self-Hosted server without authentication.
* In single-user mode, any application that can reach the server has
* permissions to use its endpoints. In this mode, some endpoints (like /me
* and /tokens) are unavailable.
*/
SingleUser
};
/**
* @brief Data retrieved from the Cesium ion server via an "appData" request
* from Cesium ion. This actually represents information about the server
* itself.
*/
struct ApplicationData {
/**
* The authentication mode that the ion server is running in.
*/
AuthenticationMode authenticationMode;
/**
* The type of store used by this ion server to hold files.
* Known values: FILE_SYSTEM, S3
*/
std::string dataStoreType;
/**
* The attribution HTML for this ion server.
*/
std::string attribution;
/**
* @brief Does the `authenticationMode` require OAuth authentication?
*/
bool needsOauthAuthentication() const {
return this->authenticationMode != AuthenticationMode::SingleUser;
}
};
} // namespace CesiumIonClient