internal WurmServer(WurmServerInfo wurmServerInfo, [NotNull] QueuedJobsSyncRunner<Job, JobResult> jobRunner) { if (wurmServerInfo == null) throw new ArgumentNullException("wurmServerInfo"); if (jobRunner == null) throw new ArgumentNullException("jobRunner"); this.wurmServerInfo = wurmServerInfo; this.jobRunner = jobRunner; }
internal WurmServer(WurmServerInfo wurmServerInfo, [NotNull] QueuedJobsSyncRunner <Job, JobResult> jobRunner) { if (wurmServerInfo == null) { throw new ArgumentNullException(nameof(wurmServerInfo)); } if (jobRunner == null) { throw new ArgumentNullException(nameof(jobRunner)); } this.wurmServerInfo = wurmServerInfo; this.jobRunner = jobRunner; }
public WurmServer Create(WurmServerInfo wurmServerInfo) { if (createdServers.Contains(wurmServerInfo.Name)) { throw new InvalidOperationException("this factory has already created Server for name " + wurmServerInfo.Name); } var server = new WurmServer(wurmServerInfo, jobRunner); createdServers.Add(wurmServerInfo.Name); return server; }
public WurmServer Create(WurmServerInfo wurmServerInfo) { if (createdServers.Contains(wurmServerInfo.ServerName)) { throw new InvalidOperationException("this factory has already created Server for name " + wurmServerInfo.ServerName); } var server = new WurmServer(wurmServerInfo, jobRunner); createdServers.Add(wurmServerInfo.ServerName); return(server); }
private WurmServer RegisterServer(WurmServerInfo wurmServerInfo) { var normalizedName = wurmServerInfo.ServerName; if (nameToServerMap.ContainsKey(normalizedName)) { throw new WurmApiException("Server already registered: " + wurmServerInfo); } var server = wurmServerFactory.Create(wurmServerInfo); nameToServerMap.Add(normalizedName, server); return(server); }
public void UpdateWurmApiConfigDictionary(IDictionary <ServerName, WurmServerInfo> dictionary) { foreach (var serverInformation in infos) { if (string.IsNullOrWhiteSpace(serverInformation.ServerName)) { continue; } var serverName = new ServerName(serverInformation.ServerName); dictionary[serverName] = new WurmServerInfo(serverInformation.ServerName, serverInformation.ServerStatsUrl ?? string.Empty, new ServerGroup(serverInformation.ServerGroup ?? string.Empty)); } }
public async Task <WebDataExtractionResult> ExtractAsync(WurmServerInfo serverInfo) { WebDataExtractionResult result = new WebDataExtractionResult(serverInfo.ServerName); var res = await httpWebRequests.GetResponseAsync(serverInfo.WebStatsUrl).ConfigureAwait(false); DateTime headerLastUpdated = res.LastModified; using (Stream stream = res.GetResponseStream()) { using (var reader = new StreamReader(stream)) { bool canReadServerName = false; bool canReadUptime = false; bool canReadWurmTime = false; string line; string strUptime = string.Empty; string strWurmDateTime = string.Empty; while ((line = reader.ReadLine()) != null) { if (canReadServerName) { Match match = Regex.Match(line, @">.+<"); string name = match.Value.Substring(1, match.Value.Length - 2); if (!string.Equals(name, serverInfo.ServerName.Original, StringComparison.InvariantCultureIgnoreCase)) { throw new WurmApiException( string.Format( "Extracted server name does not match server description, expected {0}, actual {1}", serverInfo.ServerName.Original, name)); } canReadServerName = false; } else if (canReadUptime) { Match match = Regex.Match(line, @">.+<"); strUptime = match.Value.Substring(1, match.Value.Length - 2); canReadUptime = false; } else if (canReadWurmTime) { Match match = Regex.Match(line, @">.+<"); strWurmDateTime = match.Value.Substring(1, match.Value.Length - 2); canReadWurmTime = false; } if (Regex.IsMatch(line, "Server name")) { canReadServerName = true; } else if (Regex.IsMatch(line, "Uptime")) { canReadUptime = true; } else if (Regex.IsMatch(line, "Wurm Time")) { canReadWurmTime = true; } } DateTime dtnow = Time.Get.LocalNow; if (headerLastUpdated > dtnow) { headerLastUpdated = dtnow; } TimeSpan uptime = GetTimeSpanFromUptimeWebString(strUptime); result.ServerUptime = uptime; WurmDateTime wdt = GetWurmDateTimeFromWdtWebString(strWurmDateTime); result.WurmDateTime = wdt; result.LastUpdated = headerLastUpdated; } } return(result); }
public WebDataExtractionResult Extract(WurmServerInfo serverInfo) { return(TaskHelper.UnwrapSingularAggegateException(() => ExtractAsync(serverInfo).Result)); }
private void RegisterServer(WurmServerInfo wurmServerInfo) { var normalizedName = wurmServerInfo.Name; if (this.nameToServerMap.ContainsKey(normalizedName)) { throw new WurmApiException("Server already registered: " + wurmServerInfo); } var server = wurmServerFactory.Create(wurmServerInfo); this.nameToServerMap.Add(normalizedName, server); }
public async Task<WebDataExtractionResult> ExtractAsync(WurmServerInfo serverInfo) { WebDataExtractionResult result = new WebDataExtractionResult(serverInfo.Name); var res = await this.httpWebRequests.GetResponseAsync(serverInfo.WebStatsUrl).ConfigureAwait(false); DateTime headerLastUpdated = res.LastModified; using (Stream stream = res.GetResponseStream()) { using (var reader = new StreamReader(stream)) { bool canReadServerName = false; bool canReadUptime = false; bool canReadWurmTime = false; string line; string strUptime = string.Empty; string strWurmDateTime = string.Empty; while ((line = reader.ReadLine()) != null) { if (canReadServerName) { Match match = Regex.Match(line, @">.+<"); string name = match.Value.Substring(1, match.Value.Length - 2); if (!string.Equals(name, serverInfo.Name.Original, StringComparison.InvariantCultureIgnoreCase)) { throw new WurmApiException( string.Format( "Extracted server name does not match server description, expected {0}, actual {1}", serverInfo.Name.Original, name)); } canReadServerName = false; } else if (canReadUptime) { Match match = Regex.Match(line, @">.+<"); strUptime = match.Value.Substring(1, match.Value.Length - 2); canReadUptime = false; } else if (canReadWurmTime) { Match match = Regex.Match(line, @">.+<"); strWurmDateTime = match.Value.Substring(1, match.Value.Length - 2); canReadWurmTime = false; } if (Regex.IsMatch(line, "Server name")) { canReadServerName = true; } else if (Regex.IsMatch(line, "Uptime")) { canReadUptime = true; } else if (Regex.IsMatch(line, "Wurm Time")) { canReadWurmTime = true; } } DateTime dtnow = Time.Get.LocalNow; if (headerLastUpdated > dtnow) { headerLastUpdated = dtnow; } TimeSpan uptime = GetTimeSpanFromUptimeWebString(strUptime); result.ServerUptime = uptime; WurmDateTime wdt = GetWurmDateTimeFromWdtWebString(strWurmDateTime); result.WurmDateTime = wdt; result.LastUpdated = headerLastUpdated; } } return result; }
public WebDataExtractionResult Extract(WurmServerInfo serverInfo) { return TaskHelper.UnwrapSingularAggegateException(() => ExtractAsync(serverInfo).Result); }