Exemplo n.º 1
0
        public async Task <bool> PostReportAsync([FromBody] RegistryReport registryReport)
        {
            if (registryReport != null)
            {
                if (registryReport.URL == null)
                {
                    registryReport.URL = await RecommendHostNameAsync();
                }

                var url = registryReport.URL;
                lock (Reports)
                {
                    registryReport.Received = DateTime.Now;
                    if (Reports.ContainsKey(url))
                    {
                        Reports[url] = registryReport;
                    }
                    else
                    {
                        Reports.Add(url, registryReport);
                    }

                    return(true);
                }
            }
            else
            {
                return(false);
            }
        }
Exemplo n.º 2
0
        public Task <bool> PostReportAsync([FromBody] RegistryReport registryReport)
        {
            if (registryReport != null)
            {
                var url = registryReport.URL;
                lock (Reports)
                {
                    registryReport.Received = DateTime.Now;
                    if (Reports.ContainsKey(url))
                    {
                        Reports[url] = registryReport;
                    }
                    else
                    {
                        Reports.Add(url, registryReport);
                    }

                    return(Task.FromResult(true));
                }
            }
            else
            {
                return(Task.FromResult(false));
            }
        }
Exemplo n.º 3
0
        private void Step()
        {
            lock (this)
            {
                Processing = true;

                var herokuAppName = Environment.GetEnvironmentVariable("HEROKU_APP_NAME");

                if (herokuAppName != null)
                {
                    herokuAppName = $"{herokuAppName}.herokuapp.com";
                }

                var report = new RegistryReport
                {
                    URL    = GameConfiguration.PublicURL ?? herokuAppName,
                    Worlds = Worlds.AllWorlds.Select(w => new RegistryReport.World
                    {
                        AdvertisedPlayers = w.Value.AdvertisedPlayerCount,
                        Hook     = w.Value.Hook,
                        WorldKey = w.Key
                    }).ToList()
                };

                try
                {
                    Task.Run(() =>
                    {
                        try
                        {
                            return(RegistryClient.Registry.PostReportAsync(report));
                        }
                        catch (Exception e)
                        {
                            Console.WriteLine($"Registration failure: {e.Message}");
                        }

                        return(Task.FromResult(0));
                    }).Wait(HTTPPostTimeout);
                }
                catch (Exception e)
                {
                    Console.WriteLine($"Registration failure: {e.Message}");
                }
                Processing = false;
            }
        }
Exemplo n.º 4
0
 public async Task <bool> PostReportAsync(RegistryReport registryReport)
 {
     return(await RegistryClient.APICallAsync <bool>(HttpMethod.Post, APIEndpoint.RegistryReport,
                                                     bodyContent : registryReport));
 }