Beispiel #1
0
        /// <summary>
        /// Gets a multiplayer server build.
        /// </summary>
        public static void GetBuild(GetBuildRequest request, Action <GetBuildResponse> resultCallback, Action <PlayFabError> errorCallback, object customData = null, Dictionary <string, string> extraHeaders = null)
        {
            var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer;


            PlayFabHttp.MakeApiCall("/MultiplayerServer/GetBuild", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context);
        }
        //--- Methods ---
        public async Task <GetBuildResponse> GetBuild(GetBuildRequest request)
        {
            var stopwatch = System.Diagnostics.Stopwatch.StartNew();

            try {
                var getBuildTask = _lambdaClient.InvokeAsync(new InvokeRequest {
                    Payload = JsonSerializer.Serialize(new BotRequest {
                        Command = BotCommand.GetBuild,
                        Session = request.Session,
                        Bot     = request.Bot
                    }),
                    FunctionName   = _lambdaArn,
                    InvocationType = InvocationType.RequestResponse
                });

                // check if lambda responds within time limit
                if (await Task.WhenAny(getBuildTask, Task.Delay(_requestTimeout)) != getBuildTask)
                {
                    _logger?.LogInfo($"Bot {_botId} GetBuild timed out after {stopwatch.Elapsed.TotalSeconds:N2}s");
                    return(null);
                }
                var response = Encoding.UTF8.GetString(getBuildTask.Result.Payload.ToArray());
                var result   = JsonSerializer.Deserialize <BotResponse>(response);
                _logger?.LogInfo($"Bot {_botId} GetBuild responded in {stopwatch.Elapsed.TotalSeconds:N2}s:\n{response}");
                return(result.BotBuild);
            } catch (Exception e) {
                _logger?.LogErrorAsInfo(e, $"Bot {_botId} GetBuild failed (arn: {_lambdaArn ?? "<NULL>"})");
                return(null);
            }
        }
        /// <summary>
        /// Gets a multiplayer server build.
        /// </summary>
        public static async Task <PlayFabResult <GetBuildResponse> > GetBuildAsync(GetBuildRequest request, object customData = null, Dictionary <string, string> extraHeaders = null)
        {
            if (PlayFabSettings.EntityToken == null)
            {
                throw new PlayFabException(PlayFabExceptionCode.EntityTokenNotSet, "Must call GetEntityToken before calling this method");
            }

            var httpResult = await PlayFabHttp.DoPost("/MultiplayerServer/GetBuild", request, "X-EntityToken", PlayFabSettings.EntityToken, extraHeaders);

            if (httpResult is PlayFabError)
            {
                var error = (PlayFabError)httpResult;
                PlayFabSettings.GlobalErrorHandler?.Invoke(error);
                return(new PlayFabResult <GetBuildResponse> {
                    Error = error, CustomData = customData
                });
            }

            var resultRawJson = (string)httpResult;
            var resultData    = PluginManager.GetPlugin <ISerializerPlugin>(PluginContract.PlayFab_Serializer).DeserializeObject <PlayFabJsonSuccess <GetBuildResponse> >(resultRawJson);
            var result        = resultData.data;

            return(new PlayFabResult <GetBuildResponse> {
                Result = result, CustomData = customData
            });
        }
        /// <summary>
        /// Gets a multiplayer server build.
        /// </summary>
        public void GetBuild(GetBuildRequest request, Action <GetBuildResponse> 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("/MultiplayerServer/GetBuild", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this);
        }
Beispiel #5
0
        public async Task <BuildDto> GetBuild(string projectIdentifier, int buildId, string organization = default, CancellationToken cancellationToken = default)
        {
            var request = new GetBuildRequest(organization ?? _options.Value.DefaultOrganization, projectIdentifier, buildId);

            request.Headers.Authorization = GetAuthZHeader();

            var response = await SendAsync(request, cancellationToken);

            var buildDto = await response.Content.ReadFromJsonAsync <BuildDto>(null, cancellationToken);

            return(buildDto);
        }
Beispiel #6
0
        public void CanBeConstructed()
        {
            //Arrange
            GetBuildRequest sut;

            //Act
            sut = new GetBuildRequest("my-org", "my-project", 1);

            //Assert
            Assert.NotNull(sut);
            Assert.Equal("6.1-preview.6", sut.ApiVersion);
            Assert.Equal(HttpMethod.Get, sut.Method);

            Assert.Equal("https://dev.azure.com/my-org/my-project/_apis/build/1?api-version=6.1-preview.6", sut.RequestUri.AbsoluteUri);
        }
Beispiel #7
0
        public async Task DeleteBuild(string projectIdentifier, int buildId, string organization = default, CancellationToken cancellationToken = default)
        {
            var request = new GetBuildRequest(organization ?? _options.Value.DefaultOrganization, projectIdentifier, buildId);

            request.Headers.Authorization = GetAuthZHeader();

            var response = await SendAsync(request, cancellationToken);

            if (!response.IsSuccessStatusCode)
            {
                throw new AdoClientException("Could not find requested buildId");
            }

            return;
        }
 /// <summary>
 /// Gets a multiplayer server build.
 /// </summary>
 public static void GetBuild(GetBuildRequest request, Action <GetBuildResponse> resultCallback, Action <PlayFabError> errorCallback, object customData = null, Dictionary <string, string> extraHeaders = null)
 {
     PlayFabHttp.MakeApiCall("/MultiplayerServer/GetBuild", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders);
 }