Add CloudScript models
This commit is contained in:
@@ -0,0 +1,26 @@
|
|||||||
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
using Prospect.Server.Api.Models.Client;
|
||||||
|
|
||||||
|
namespace Prospect.Server.Api.Controllers
|
||||||
|
{
|
||||||
|
[Route("CloudScript")]
|
||||||
|
[ApiController]
|
||||||
|
public class CloudScriptController : Controller
|
||||||
|
{
|
||||||
|
[HttpPost("ExecuteFunction")]
|
||||||
|
[Produces("application/json")]
|
||||||
|
public IActionResult ExecuteFunction(FExecuteFunctionRequest request)
|
||||||
|
{
|
||||||
|
return Ok(new ClientResponse<FExecuteFunctionResult>
|
||||||
|
{
|
||||||
|
Code = 200,
|
||||||
|
Status = "OK",
|
||||||
|
Data = new FExecuteFunctionResult
|
||||||
|
{
|
||||||
|
ExecutionTimeMilliseconds = 12,
|
||||||
|
FunctionName = request.FunctionName
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
namespace Prospect.Server.Api.Models.Client.Data
|
||||||
|
{
|
||||||
|
public enum CloudScriptRevisionOption
|
||||||
|
{
|
||||||
|
Live,
|
||||||
|
Latest,
|
||||||
|
Specific
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
using System.Text.Json.Serialization;
|
||||||
|
|
||||||
|
namespace Prospect.Server.Api.Models.Client.Data
|
||||||
|
{
|
||||||
|
public class FFunctionExecutionError
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// [optional] Error code, such as CloudScriptAzureFunctionsExecutionTimeLimitExceeded, CloudScriptAzureFunctionsArgumentSizeExceeded,
|
||||||
|
/// CloudScriptAzureFunctionsReturnSizeExceeded or CloudScriptAzureFunctionsHTTPRequestError
|
||||||
|
/// </summary>
|
||||||
|
[JsonPropertyName("Error")]
|
||||||
|
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingDefault)]
|
||||||
|
public string Error { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// [optional] Details about the error
|
||||||
|
/// </summary>
|
||||||
|
[JsonPropertyName("Message")]
|
||||||
|
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingDefault)]
|
||||||
|
public string Message { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// [optional] Point during the execution of the function at which the error occurred, if any
|
||||||
|
/// </summary>
|
||||||
|
[JsonPropertyName("StackTrace")]
|
||||||
|
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingDefault)]
|
||||||
|
public string StackTrace { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
using System.Text.Json.Serialization;
|
||||||
|
|
||||||
|
namespace Prospect.Server.Api.Models.Client.Data
|
||||||
|
{
|
||||||
|
public class FLogStatement
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// [optional] Optional object accompanying the message as contextual information
|
||||||
|
/// </summary>
|
||||||
|
[JsonPropertyName("Data")]
|
||||||
|
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingDefault)]
|
||||||
|
public object Data { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// [optional] 'Debug', 'Info', or 'Error'
|
||||||
|
/// </summary>
|
||||||
|
[JsonPropertyName("Level")]
|
||||||
|
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingDefault)]
|
||||||
|
public string Level { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// [optional] undefined
|
||||||
|
/// </summary>
|
||||||
|
[JsonPropertyName("Message")]
|
||||||
|
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingDefault)]
|
||||||
|
public string Message { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
using System.Text.Json.Serialization;
|
||||||
|
|
||||||
|
namespace Prospect.Server.Api.Models.Client.Data
|
||||||
|
{
|
||||||
|
public class FScriptExecutionError
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// [optional] Error code, such as CloudScriptNotFound, JavascriptException, CloudScriptFunctionArgumentSizeExceeded,
|
||||||
|
/// CloudScriptAPIRequestCountExceeded, CloudScriptAPIRequestError, or CloudScriptHTTPRequestError
|
||||||
|
/// </summary>
|
||||||
|
[JsonPropertyName("Error")]
|
||||||
|
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingDefault)]
|
||||||
|
public string Error { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// [optional] Details about the error
|
||||||
|
/// </summary>
|
||||||
|
[JsonPropertyName("Message")]
|
||||||
|
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingDefault)]
|
||||||
|
public string Message { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// [optional] Point during the execution of the script at which the error occurred, if any
|
||||||
|
/// </summary>
|
||||||
|
[JsonPropertyName("StackTrace")]
|
||||||
|
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingDefault)]
|
||||||
|
public string StackTrace { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,85 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
|
using Prospect.Server.Api.Models.Client.Data;
|
||||||
|
|
||||||
|
namespace Prospect.Server.Api.Models.Client
|
||||||
|
{
|
||||||
|
public class FExecuteCloudScriptResult
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Number of PlayFab API requests issued by the CloudScript function
|
||||||
|
/// </summary>
|
||||||
|
[JsonPropertyName("APIRequestsIssued")]
|
||||||
|
public int APIRequestsIssued { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// [optional] Information about the error, if any, that occurred during execution
|
||||||
|
/// </summary>
|
||||||
|
[JsonPropertyName("Error")]
|
||||||
|
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingDefault)]
|
||||||
|
public FScriptExecutionError Error { get; set; }
|
||||||
|
|
||||||
|
[JsonPropertyName("ExecutionTimeSeconds")]
|
||||||
|
public double? ExecutionTimeSeconds { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// [optional] The name of the function that executed
|
||||||
|
/// </summary>
|
||||||
|
[JsonPropertyName("FunctionName")]
|
||||||
|
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingDefault)]
|
||||||
|
public string FunctionName { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// [optional] The object returned from the CloudScript function, if any
|
||||||
|
/// </summary>
|
||||||
|
[JsonPropertyName("FunctionResult")]
|
||||||
|
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingDefault)]
|
||||||
|
public object FunctionResult { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// [optional] Flag indicating if the FunctionResult was too large and was subsequently dropped from this event. This only occurs if
|
||||||
|
/// the total event size is larger than 350KB.
|
||||||
|
/// </summary>
|
||||||
|
[JsonPropertyName("FunctionResultTooLarge")]
|
||||||
|
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingDefault)]
|
||||||
|
public bool? FunctionResultTooLarge { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Number of external HTTP requests issued by the CloudScript function
|
||||||
|
/// </summary>
|
||||||
|
[JsonPropertyName("HttpRequestsIssued")]
|
||||||
|
public int HttpRequestsIssued { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// [optional] Entries logged during the function execution. These include both entries logged in the function code using log.info()
|
||||||
|
/// and log.error() and error entries for API and HTTP request failures.
|
||||||
|
/// </summary>
|
||||||
|
[JsonPropertyName("Logs")]
|
||||||
|
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingDefault)]
|
||||||
|
public List<FLogStatement> Logs { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// [optional] Flag indicating if the logs were too large and were subsequently dropped from this event. This only occurs if the total
|
||||||
|
/// event size is larger than 350KB after the FunctionResult was removed.
|
||||||
|
/// </summary>
|
||||||
|
[JsonPropertyName("LogsTooLarge")]
|
||||||
|
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingDefault)]
|
||||||
|
public bool? LogsTooLarge { get; set; }
|
||||||
|
|
||||||
|
[JsonPropertyName("MemoryConsumedBytes")]
|
||||||
|
public uint MemoryConsumedBytes { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Processor time consumed while executing the function. This does not include time spent waiting on API calls or HTTP
|
||||||
|
/// requests.
|
||||||
|
/// </summary>
|
||||||
|
[JsonPropertyName("ProcessorTimeSeconds")]
|
||||||
|
public double ProcessorTimeSeconds { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The revision of the CloudScript that executed
|
||||||
|
/// </summary>
|
||||||
|
[JsonPropertyName("Revision")]
|
||||||
|
public int Revision { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,60 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
|
using Prospect.Server.Api.Models.Client.Data;
|
||||||
|
|
||||||
|
namespace Prospect.Server.Api.Models.Client
|
||||||
|
{
|
||||||
|
public class FExecuteCloudScriptServerRequest
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// [optional] The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
|
||||||
|
/// </summary>
|
||||||
|
[JsonPropertyName("CustomTags")]
|
||||||
|
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingDefault)]
|
||||||
|
public Dictionary<string, string> CustomTags { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The name of the CloudScript function to execute
|
||||||
|
/// </summary>
|
||||||
|
[JsonPropertyName("FunctionName")]
|
||||||
|
public string FunctionName { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// [optional] Object that is passed in to the function as the first argument
|
||||||
|
/// </summary>
|
||||||
|
[JsonPropertyName("FunctionParameter")]
|
||||||
|
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingDefault)]
|
||||||
|
public string FunctionParameter { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// [optional] Generate a 'player_executed_cloudscript' PlayStream event containing the results of the function execution and other
|
||||||
|
/// contextual information. This event will show up in the PlayStream debugger console for the player in Game Manager.
|
||||||
|
/// </summary>
|
||||||
|
[JsonPropertyName("GeneratePlayStreamEvent")]
|
||||||
|
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingDefault)]
|
||||||
|
public bool? GeneratePlayStreamEvent { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The unique user identifier for the player on whose behalf the script is being run
|
||||||
|
/// </summary>
|
||||||
|
[JsonPropertyName("PlayFabId")]
|
||||||
|
public string PlayFabId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// [optional] Option for which revision of the CloudScript to execute. 'Latest' executes the most recently created revision, 'Live'
|
||||||
|
/// executes the current live, published revision, and 'Specific' executes the specified revision. The default value is
|
||||||
|
/// 'Specific', if the SpeificRevision parameter is specified, otherwise it is 'Live'.
|
||||||
|
/// </summary>
|
||||||
|
[JsonPropertyName("RevisionSelection")]
|
||||||
|
[JsonConverter(typeof(JsonStringEnumConverter))]
|
||||||
|
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingDefault)]
|
||||||
|
public CloudScriptRevisionOption? RevisionSelection { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// [optional] The specivic revision to execute, when RevisionSelection is set to 'Specific'
|
||||||
|
/// </summary>
|
||||||
|
[JsonPropertyName("SpecificRevision")]
|
||||||
|
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingDefault)]
|
||||||
|
public int? SpecificRevision { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,44 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
|
using Prospect.Server.Api.Models.Client.Data;
|
||||||
|
|
||||||
|
namespace Prospect.Server.Api.Models.Client
|
||||||
|
{
|
||||||
|
public class FExecuteFunctionRequest
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// [optional] The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
|
||||||
|
/// </summary>
|
||||||
|
[JsonPropertyName("CustomTags")]
|
||||||
|
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingDefault)]
|
||||||
|
public Dictionary<string, string> CustomTags { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// [optional] The entity to perform this action on.
|
||||||
|
/// </summary>
|
||||||
|
[JsonPropertyName("Entity")]
|
||||||
|
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingDefault)]
|
||||||
|
public FEntityKey Entity { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The name of the CloudScript function to execute
|
||||||
|
/// </summary>
|
||||||
|
[JsonPropertyName("FunctionName")]
|
||||||
|
public string FunctionName { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// [optional] Object that is passed in to the function as the FunctionArgument field of the FunctionExecutionContext data structure
|
||||||
|
/// </summary>
|
||||||
|
[JsonPropertyName("FunctionParameter")]
|
||||||
|
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingDefault)]
|
||||||
|
public string FunctionParameter { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// [optional] Generate a 'entity_executed_cloudscript_function' PlayStream event containing the results of the function execution and
|
||||||
|
/// other contextual information. This event will show up in the PlayStream debugger console for the player in Game Manager.
|
||||||
|
/// </summary>
|
||||||
|
[JsonPropertyName("GeneratePlayStreamEvent")]
|
||||||
|
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingDefault)]
|
||||||
|
public bool? GeneratePlayStreamEvent { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
using System.Text.Json.Serialization;
|
||||||
|
using Prospect.Server.Api.Models.Client.Data;
|
||||||
|
|
||||||
|
namespace Prospect.Server.Api.Models.Client
|
||||||
|
{
|
||||||
|
public class FExecuteFunctionResult
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// [optional] Error from the CloudScript Azure Function.
|
||||||
|
/// </summary>
|
||||||
|
[JsonPropertyName("Error")]
|
||||||
|
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingDefault)]
|
||||||
|
public FFunctionExecutionError Error { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The amount of time the function took to execute
|
||||||
|
/// </summary>
|
||||||
|
[JsonPropertyName("ExecutionTimeMilliseconds")]
|
||||||
|
public int ExecutionTimeMilliseconds { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// [optional] The name of the function that executed
|
||||||
|
/// </summary>
|
||||||
|
[JsonPropertyName("FunctionName")]
|
||||||
|
public string FunctionName { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// [optional] The object returned from the function, if any
|
||||||
|
/// </summary>
|
||||||
|
[JsonPropertyName("FunctionResult")]
|
||||||
|
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingDefault)]
|
||||||
|
public object FunctionResult { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// [optional] Flag indicating if the FunctionResult was too large and was subsequently dropped from this event.
|
||||||
|
/// </summary>
|
||||||
|
[JsonPropertyName("FunctionResultTooLarge")]
|
||||||
|
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingDefault)]
|
||||||
|
public bool? FunctionResultTooLarge { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -9,6 +9,7 @@ namespace Prospect.Server.Api.Models.Client
|
|||||||
/// [optional] The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
|
/// [optional] The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[JsonPropertyName("CustomTags")]
|
[JsonPropertyName("CustomTags")]
|
||||||
|
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingDefault)]
|
||||||
public Dictionary<string, string> CustomTags { get; set; }
|
public Dictionary<string, string> CustomTags { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -9,6 +9,7 @@ namespace Prospect.Server.Api.Models.Client
|
|||||||
/// [optional] The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
|
/// [optional] The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[JsonPropertyName("CustomTags")]
|
[JsonPropertyName("CustomTags")]
|
||||||
|
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingDefault)]
|
||||||
public Dictionary<string, string> CustomTags { get; set; }
|
public Dictionary<string, string> CustomTags { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
Reference in New Issue
Block a user