예제 #1
0
 public CheckBblStandby()
 {
     context        = new PlayFabAuthenticationContext();
     settings       = new PlayFabApiSettings();
     authApi        = new PlayFabAuthenticationInstanceAPI(settings, context);
     multiplayerApi = new PlayFabMultiplayerInstanceAPI(settings, context);
 }
예제 #2
0
 public Player(string customId, PlayFabApiSettings settings)
 {
     this.customId = customId;
     httpClient    = new HttpClient();
     context       = new PlayFabAuthenticationContext();
     clientApi     = new PlayFabClientInstanceAPI(settings, context);
     mpApi         = new PlayFabMultiplayerInstanceAPI(settings, context);
 }
예제 #3
0
        public PlayFabQosApi(PlayFabApiSettings settings = null, PlayFabAuthenticationContext authContext = null, bool reportResults = true)
        {
            _authContext = authContext ?? PlayFabSettings.staticPlayer;

            multiplayerApi     = new PlayFabMultiplayerInstanceAPI(settings, _authContext);
            eventsApi          = new PlayFabEventsInstanceAPI(settings, _authContext);
            qosResultsReporter = SendSuccessfulQosResultsToPlayFab;
            _reportResults     = reportResults;
        }
        public async void TestForNotFoundWithImportantInfo(UUnitTestContext testContext)
        {
            var eReq = new AuthenticationModels.GetEntityTokenRequest();

            eReq.Entity      = new AuthenticationModels.EntityKey();
            eReq.Entity.Type = "title";
            eReq.Entity.Id   = testTitleData.titleId;

            var multiApiSettings = new PlayFabApiSettings();

            multiApiSettings.TitleId            = testTitleData.titleId;
            multiApiSettings.DeveloperSecretKey = testTitleData.developerSecretKey;
            var authApi = new PlayFabAuthenticationInstanceAPI(multiApiSettings);

            var tokenTask = await authApi.GetEntityTokenAsync(eReq);

            testContext.IsNull(tokenTask.Error, "Failed to retrieve the Title Entity Token, check your playFabSettings.staticPlayer: " + PlayFabSettings.staticPlayer.EntityType);

            if (aliasId == "")
            {
                testContext.Fail("aliasId was blank, we will not get the expected failed NotFound response this test is asking for. Make sure testTitleData.json has a valid aliasId listed (check playfab multiplayer dashboard for your own valid aliasId)");
            }

            MultiplayerModels.UpdateBuildAliasRequest updateBuildAliasRequest = new MultiplayerModels.UpdateBuildAliasRequest()
            {
                AliasId               = aliasId,
                AliasName             = "aliasName",
                AuthenticationContext = new PlayFab.PlayFabAuthenticationContext()
                {
                    EntityToken = tokenTask.Result.EntityToken
                },
            };

            var multiplayerApi = new PlayFabMultiplayerInstanceAPI(multiApiSettings, updateBuildAliasRequest.AuthenticationContext);

            PlayFab.PlayFabResult <MultiplayerModels.BuildAliasDetailsResponse> res = await multiplayerApi.UpdateBuildAliasAsync(updateBuildAliasRequest);

            string response = PlayFab.PluginManager.GetPlugin <ISerializerPlugin>(PluginContract.PlayFab_Serializer).SerializeObject(res);

            if (response.Contains("MultiplayerServerNotFound") && res.Error.HttpCode == 404)
            {
                testContext.EndTest(UUnitFinishState.PASSED, null);
            }
            else
            {
                testContext.Fail("We called the Mutliplayer API expecting to not find anything, but we didn't detect this to be the error. Details: " + res.Error.GenerateErrorReport() + " and http code: " + res.Error.HttpCode);
            }
        }
예제 #5
0
        protected override void BeginProcessing()
        {
            if (string.IsNullOrEmpty(PFTokenUtility.Instance.TitleId))
            {
                throw new Exception("Run Set-PfTitle before running any cmdlet.");
            }

            Instance = new PlayFabMultiplayerInstanceAPI(new PlayFabApiSettings
            {
                ProductionEnvironmentUrl = ProductionEnvironmentUrl ?? PlayFabSettings.staticSettings.ProductionEnvironmentUrl,
                TitleId            = PlayFabSettings.staticSettings.TitleId,
                VerticalName       = PlayFabSettings.staticSettings.VerticalName,
                AdvertisingIdType  = PlayFabSettings.staticSettings.AdvertisingIdType,
                AdvertisingIdValue = PlayFabSettings.staticSettings.AdvertisingIdValue,
                DeveloperSecretKey = PlayFabSettings.staticSettings.DeveloperSecretKey,
                DisableAdvertising = PlayFabSettings.staticSettings.DisableAdvertising
            }, GetAuthenticationContext());
        }
예제 #6
0
        private static async Task Run(string titleId, string playerId, string buildId, bool verbose)
        {
            PlayFabApiSettings settings = new PlayFabApiSettings()
            {
                TitleId = titleId
            };
            PlayFabClientInstanceAPI clientApi = new PlayFabClientInstanceAPI(settings);

            // Login
            var loginRequest = new LoginWithCustomIDRequest()
            {
                CustomId      = playerId,
                CreateAccount = true
            };
            PlayFabResult <LoginResult> login = await clientApi.LoginWithCustomIDAsync(loginRequest);

            if (login.Error != null)
            {
                Console.WriteLine(login.Error.ErrorMessage);
                throw new Exception($"Login failed with HttpStatus={login.Error.HttpStatus}");
            }
            Console.WriteLine($"Logged in player {login.Result.PlayFabId} (CustomId={playerId})");
            Console.WriteLine();

            // Measure QoS
            Stopwatch     sw        = Stopwatch.StartNew();
            PlayFabQosApi qosApi    = new PlayFabQosApi(settings, clientApi.authenticationContext);
            QosResult     qosResult = await qosApi.GetQosResultAsync(250, degreeOfParallelism : 4, pingsPerRegion : 10);

            if (qosResult.ErrorCode != 0)
            {
                Console.WriteLine(qosResult.ErrorMessage);
                throw new Exception($"QoS ping failed with ErrorCode={qosResult.ErrorCode}");
            }

            Console.WriteLine($"Pinged QoS servers in {sw.ElapsedMilliseconds}ms with results:");

            if (verbose)
            {
                string resultsStr = JsonConvert.SerializeObject(qosResult.RegionResults, Formatting.Indented);
                Console.WriteLine(resultsStr);
            }

            int timeouts = qosResult.RegionResults.Sum(x => x.NumTimeouts);

            Console.WriteLine(string.Join(Environment.NewLine,
                                          qosResult.RegionResults.Select(x => $"{x.Region} - {x.LatencyMs}ms")));

            Console.WriteLine($"NumTimeouts={timeouts}");
            Console.WriteLine();

            // Allocate a server
            string        sessionId        = Guid.NewGuid().ToString();
            List <string> preferredRegions = qosResult.RegionResults
                                             .Where(x => x.ErrorCode == (int)QosErrorCode.Success)
                                             .Select(x => x.Region).ToList();

            PlayFabMultiplayerInstanceAPI mpApi = new PlayFabMultiplayerInstanceAPI(settings, clientApi.authenticationContext);
            PlayFabResult <RequestMultiplayerServerResponse> server =
                await mpApi.RequestMultiplayerServerAsync(new RequestMultiplayerServerRequest()
            {
                BuildId          = buildId,
                PreferredRegions = preferredRegions,
                SessionId        = sessionId
            }
                                                          );

            if (server.Error != null)
            {
                Console.WriteLine(server.Error.ErrorMessage);
                throw new Exception($"Allocation failed with HttpStatus={server.Error.HttpStatus}");
            }

            string serverLoc = $"{server.Result.IPV4Address}:{server.Result.Ports[0].Num}";

            Console.WriteLine($"Allocated server {serverLoc}");

            // Issue Http request against the server
            using (HttpResponseMessage getResult = await HttpClient.GetAsync("http://" + serverLoc))
            {
                getResult.EnsureSuccessStatusCode();

                Console.WriteLine("Received response:");
                string responseStr = await getResult.Content.ReadAsStringAsync();

                Console.WriteLine(responseStr);
                Console.WriteLine();
            }
        }