2024-12-15 01:39:39 +00:00
#if ! DISABLE_PLAYFABENTITY_API
using System ;
using System.Collections.Generic ;
using PlayFab.EventsModels ;
using PlayFab.Internal ;
using PlayFab.SharedModels ;
namespace PlayFab
{
/// <summary>
/// Write custom PlayStream and Telemetry events for any PlayFab entity. Telemetry events can be used for analytic,
/// reporting, or debugging. PlayStream events can do all of that and also trigger custom actions in near real-time.
/// </summary>
public class PlayFabEventsInstanceAPI : IPlayFabInstanceApi
{
public readonly PlayFabApiSettings apiSettings = null ;
public readonly PlayFabAuthenticationContext authenticationContext = null ;
public PlayFabEventsInstanceAPI ( PlayFabAuthenticationContext context )
{
if ( context = = null )
throw new PlayFabException ( PlayFabExceptionCode . AuthContextRequired , "Context cannot be null, create a PlayFabAuthenticationContext for each player in advance, or call <PlayFabClientInstanceAPI>.GetAuthenticationContext()" ) ;
authenticationContext = context ;
}
public PlayFabEventsInstanceAPI ( PlayFabApiSettings settings , PlayFabAuthenticationContext context )
{
if ( context = = null )
throw new PlayFabException ( PlayFabExceptionCode . AuthContextRequired , "Context cannot be null, create a PlayFabAuthenticationContext for each player in advance, or call <PlayFabClientInstanceAPI>.GetAuthenticationContext()" ) ;
apiSettings = settings ;
authenticationContext = context ;
}
/// <summary>
/// Verify entity login.
/// </summary>
public bool IsEntityLoggedIn ( )
{
return authenticationContext = = null ? false : authenticationContext . IsEntityLoggedIn ( ) ;
}
/// <summary>
/// Clear the Client SessionToken which allows this Client to call API calls requiring login.
/// A new/fresh login will be required after calling this.
/// </summary>
public void ForgetAllCredentials ( )
{
if ( authenticationContext ! = null )
{
authenticationContext . ForgetAllCredentials ( ) ;
}
}
2025-01-24 21:36:28 +00:00
/// <summary>
/// Creates a new telemetry key for the title.
/// </summary>
public void CreateTelemetryKey ( CreateTelemetryKeyRequest request , Action < CreateTelemetryKeyResponse > resultCallback , Action < PlayFabError > errorCallback , object customData = null , Dictionary < string , string > extraHeaders = null )
{
var context = ( request = = null ? null : request . AuthenticationContext ) ? ? authenticationContext ;
var callSettings = apiSettings ? ? PlayFabSettings . staticSettings ;
if ( ! context . IsEntityLoggedIn ( ) ) throw new PlayFabException ( PlayFabExceptionCode . NotLoggedIn , "Must be logged in to call this method" ) ;
PlayFabHttp . MakeApiCall ( "/Event/CreateTelemetryKey" , request , AuthType . EntityToken , resultCallback , errorCallback , customData , extraHeaders , context , callSettings , this ) ;
}
/// <summary>
/// Deletes a telemetry key configured for the title.
/// </summary>
public void DeleteTelemetryKey ( DeleteTelemetryKeyRequest request , Action < DeleteTelemetryKeyResponse > resultCallback , Action < PlayFabError > errorCallback , object customData = null , Dictionary < string , string > extraHeaders = null )
{
var context = ( request = = null ? null : request . AuthenticationContext ) ? ? authenticationContext ;
var callSettings = apiSettings ? ? PlayFabSettings . staticSettings ;
if ( ! context . IsEntityLoggedIn ( ) ) throw new PlayFabException ( PlayFabExceptionCode . NotLoggedIn , "Must be logged in to call this method" ) ;
PlayFabHttp . MakeApiCall ( "/Event/DeleteTelemetryKey" , request , AuthType . EntityToken , resultCallback , errorCallback , customData , extraHeaders , context , callSettings , this ) ;
}
/// <summary>
/// Gets information about a telemetry key configured for the title.
/// </summary>
public void GetTelemetryKey ( GetTelemetryKeyRequest request , Action < GetTelemetryKeyResponse > resultCallback , Action < PlayFabError > errorCallback , object customData = null , Dictionary < string , string > extraHeaders = null )
{
var context = ( request = = null ? null : request . AuthenticationContext ) ? ? authenticationContext ;
var callSettings = apiSettings ? ? PlayFabSettings . staticSettings ;
if ( ! context . IsEntityLoggedIn ( ) ) throw new PlayFabException ( PlayFabExceptionCode . NotLoggedIn , "Must be logged in to call this method" ) ;
PlayFabHttp . MakeApiCall ( "/Event/GetTelemetryKey" , request , AuthType . EntityToken , resultCallback , errorCallback , customData , extraHeaders , context , callSettings , this ) ;
}
/// <summary>
/// Lists all telemetry keys configured for the title.
/// </summary>
public void ListTelemetryKeys ( ListTelemetryKeysRequest request , Action < ListTelemetryKeysResponse > resultCallback , Action < PlayFabError > errorCallback , object customData = null , Dictionary < string , string > extraHeaders = null )
{
var context = ( request = = null ? null : request . AuthenticationContext ) ? ? authenticationContext ;
var callSettings = apiSettings ? ? PlayFabSettings . staticSettings ;
if ( ! context . IsEntityLoggedIn ( ) ) throw new PlayFabException ( PlayFabExceptionCode . NotLoggedIn , "Must be logged in to call this method" ) ;
PlayFabHttp . MakeApiCall ( "/Event/ListTelemetryKeys" , request , AuthType . EntityToken , resultCallback , errorCallback , customData , extraHeaders , context , callSettings , this ) ;
}
/// <summary>
/// Sets a telemetry key to the active or deactivated state.
/// </summary>
public void SetTelemetryKeyActive ( SetTelemetryKeyActiveRequest request , Action < SetTelemetryKeyActiveResponse > resultCallback , Action < PlayFabError > errorCallback , object customData = null , Dictionary < string , string > extraHeaders = null )
{
var context = ( request = = null ? null : request . AuthenticationContext ) ? ? authenticationContext ;
var callSettings = apiSettings ? ? PlayFabSettings . staticSettings ;
if ( ! context . IsEntityLoggedIn ( ) ) throw new PlayFabException ( PlayFabExceptionCode . NotLoggedIn , "Must be logged in to call this method" ) ;
PlayFabHttp . MakeApiCall ( "/Event/SetTelemetryKeyActive" , request , AuthType . EntityToken , resultCallback , errorCallback , customData , extraHeaders , context , callSettings , this ) ;
}
2024-12-15 01:39:39 +00:00
/// <summary>
/// Write batches of entity based events to PlayStream. The namespace of the Event must be 'custom' or start with 'custom.'.
/// </summary>
public void WriteEvents ( WriteEventsRequest request , Action < WriteEventsResponse > resultCallback , Action < PlayFabError > errorCallback , object customData = null , Dictionary < string , string > extraHeaders = null )
{
var context = ( request = = null ? null : request . AuthenticationContext ) ? ? authenticationContext ;
var callSettings = apiSettings ? ? PlayFabSettings . staticSettings ;
if ( ! context . IsEntityLoggedIn ( ) ) throw new PlayFabException ( PlayFabExceptionCode . NotLoggedIn , "Must be logged in to call this method" ) ;
PlayFabHttp . MakeApiCall ( "/Event/WriteEvents" , request , AuthType . EntityToken , resultCallback , errorCallback , customData , extraHeaders , context , callSettings , this ) ;
}
/// <summary>
/// Write batches of entity based events to as Telemetry events (bypass PlayStream). The namespace must be 'custom' or start
/// with 'custom.'
/// </summary>
public void WriteTelemetryEvents ( WriteEventsRequest request , Action < WriteEventsResponse > resultCallback , Action < PlayFabError > errorCallback , object customData = null , Dictionary < string , string > extraHeaders = null )
{
var context = ( request = = null ? null : request . AuthenticationContext ) ? ? authenticationContext ;
var callSettings = apiSettings ? ? PlayFabSettings . staticSettings ;
if ( ! context . IsEntityLoggedIn ( ) ) throw new PlayFabException ( PlayFabExceptionCode . NotLoggedIn , "Must be logged in to call this method" ) ;
PlayFabHttp . MakeApiCall ( "/Event/WriteTelemetryEvents" , request , AuthType . EntityToken , resultCallback , errorCallback , customData , extraHeaders , context , callSettings , this ) ;
}
2025-01-24 21:36:28 +00:00
/// <summary>
/// Write batches of entity based events to as Telemetry events (bypass PlayStream) using a Telemetry Key. The namespace must be 'custom' or start
/// with 'custom.'
/// </summary>
public void WriteTelemetryEventsWithTelemetryKey ( WriteEventsRequest request , Action < WriteEventsResponse > resultCallback , Action < PlayFabError > errorCallback , object customData = null , Dictionary < string , string > extraHeaders = null )
{
var context = ( request = = null ? null : request . AuthenticationContext ) ? ? authenticationContext ;
var callSettings = apiSettings ? ? PlayFabSettings . staticSettings ;
if ( ! context . IsTelemetryKeyProvided ( ) ) throw new PlayFabException ( PlayFabExceptionCode . NotLoggedIn , "Must provide a telemetry key to call this method" ) ;
2024-12-15 01:39:39 +00:00
2025-01-24 21:36:28 +00:00
PlayFabHttp . MakeApiCall ( "/Event/WriteTelemetryEvents" , request , AuthType . TelemetryKey , resultCallback , errorCallback , customData , extraHeaders , context , callSettings ) ;
}
2024-12-15 01:39:39 +00:00
}
}
#endif