// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 #pragma once // Standard Library #include // AWS SDK #include // GameKit #include #include namespace GameKit { namespace Identity { struct LoginUrlResponseInternal { unsigned int gamekitStatus; std::string requestId; std::string loginUrl; }; class IFederatedIdentityProvider { public: IFederatedIdentityProvider() {} IFederatedIdentityProvider(std::map clientSettings, FuncLogCallback logCb) {}; virtual ~IFederatedIdentityProvider() {}; virtual LoginUrlResponseInternal GetLoginUrl() = 0; virtual unsigned int PollForCompletion(const std::string& requestId, int timeout, std::string& encryptedLocation) = 0; virtual unsigned int RetrieveTokens(const std::string& location, std::string& tokens) = 0; }; template class FederatedIdentityProviderFactory { public: inline static T CreateProvider(std::map clientSettings, FuncLogCallback logCb) { return T(clientSettings, logCb); } inline static T CreateProviderWithHttpClient(std::map clientSettings, const std::shared_ptr httpClient, FuncLogCallback logCb) { return T(clientSettings, httpClient, logCb); } }; } }