public async Task <int> GetMaxUsersNumberAsync() { // Init data if (_totalUsersCount == -1) { _totalUsersCount = await _twitterUserDal.GetTwitterUsersCountAsync(); var warmUpMaxCapacity = _instanceSettings.MaxUsersCapacity / 4; _warmUpIterations = warmUpMaxCapacity == 0 ? 0 : (int)(_totalUsersCount / (float)warmUpMaxCapacity); } // Return if warm up ended if (_warmUpIterations <= 0) { return(_instanceSettings.MaxUsersCapacity); } // Calculate warm up value var maxUsers = _warmUpIterations > 0 ? _instanceSettings.MaxUsersCapacity / 4 : _instanceSettings.MaxUsersCapacity; _warmUpIterations--; return(maxUsers); }
public async Task <IActionResult> Index() { var stats = new Models.StatisticsModels.Statistics { FollowersCount = await _followersDal.GetFollowersCountAsync(), TwitterUserCount = await _twitterUserDal.GetTwitterUsersCountAsync(), TwitterStatistics = _twitterStatistics.GetStatistics(), ExtractionStatistics = _extractionStatistics.GetStatistics(), }; return(View(stats)); }
public async Task <CachedStatistics> GetStatisticsAsync() { if (_cachedStatistics == null || (DateTime.UtcNow - _cachedStatistics.RefreshedTime).TotalMinutes > 15) { var twitterUserMax = _instanceSettings.MaxUsersCapacity; var twitterUserCount = await _twitterUserDal.GetTwitterUsersCountAsync(); var saturation = (int)((double)twitterUserCount / twitterUserMax * 100); _cachedStatistics = new CachedStatistics { RefreshedTime = DateTime.UtcNow, Saturation = saturation }; } return(_cachedStatistics); }
public async Task <IActionResult> NodeInfo(string id) { var version = System.Reflection.Assembly.GetEntryAssembly().GetName().Version.ToString(3); var twitterUsersCount = await _twitterUserDal.GetTwitterUsersCountAsync(); if (id == "2.0") { var nodeInfo = new NodeInfoV20 { version = "2.0", usage = new Usage() { localPosts = 0, users = new Users() { total = twitterUsersCount } }, software = new Software() { name = "birdsitelive", version = version }, protocols = new[] { "activitypub" }, openRegistrations = false, services = new Models.WellKnownModels.Services() { inbound = new object[0], outbound = new object[0] }, metadata = new Metadata() { email = _settings.AdminEmail } }; return(new JsonResult(nodeInfo)); } if (id == "2.1") { var nodeInfo = new NodeInfoV21 { version = "2.1", usage = new Usage() { localPosts = 0, users = new Users() { total = twitterUsersCount } }, software = new SoftwareV21() { name = "birdsitelive", version = version, repository = "https://github.com/NicolasConstant/BirdsiteLive" }, protocols = new[] { "activitypub" }, openRegistrations = false, services = new Models.WellKnownModels.Services() { inbound = new object[0], outbound = new object[0] }, metadata = new Metadata() { email = _settings.AdminEmail } }; return(new JsonResult(nodeInfo)); } return(NotFound()); }