diff --git a/src/Tgstation.Server.Host/Components/Byond/ByondManager.cs b/src/Tgstation.Server.Host/Components/Byond/ByondManager.cs index 65606da711..eab96c95d8 100644 --- a/src/Tgstation.Server.Host/Components/Byond/ByondManager.cs +++ b/src/Tgstation.Server.Host/Components/Byond/ByondManager.cs @@ -150,15 +150,13 @@ namespace Tgstation.Server.Host.Components.Byond /// public async Task UseExecutables(Version requiredVersion, CancellationToken cancellationToken) { - var versionToUse = requiredVersion ?? ActiveVersion; - if (versionToUse == null) - throw new JobException(ErrorCode.ByondNoVersionsInstalled); + var versionToUse = requiredVersion ?? ActiveVersion ?? throw new JobException(ErrorCode.ByondNoVersionsInstalled); await InstallVersion(versionToUse, null, cancellationToken); var versionKey = VersionKey(versionToUse, true); var binPathForVersion = ioManager.ConcatPath(versionKey, BinPath); - logger.LogTrace("Creating ByondExecutableLock lock for version {0}", versionToUse); + logger.LogTrace("Creating ByondExecutableLock lock for version {versionToUse}", versionToUse); return new ByondExecutableLock( ioManager, semaphore, @@ -203,7 +201,7 @@ namespace Tgstation.Server.Host.Components.Byond ioManager.ConcatPath( localCfgDirectory, TrustedDmbFileName); - logger.LogTrace("Deleting trusted .dmbs file {0}", trustedFilePath); + logger.LogTrace("Deleting trusted .dmbs file {trustedFilePath}", trustedFilePath); await ioManager.DeleteFile( trustedFilePath, cancellationToken); @@ -219,7 +217,7 @@ namespace Tgstation.Server.Host.Components.Byond var versionFile = ioManager.ConcatPath(path, VersionFileName); if (!await ioManager.FileExists(versionFile, cancellationToken)) { - logger.LogInformation("Cleaning unparsable version path: {0}", ioManager.ResolvePath(path)); + logger.LogInformation("Cleaning unparsable version path: {versionPath}", ioManager.ResolvePath(path)); await ioManager.DeleteDirectory(path, cancellationToken); // cleanup return; } @@ -232,7 +230,7 @@ namespace Tgstation.Server.Host.Components.Byond lock (installedVersions) if (!installedVersions.ContainsKey(key)) { - logger.LogDebug("Adding detected BYOND version {0}...", key); + logger.LogDebug("Adding detected BYOND version {versionKey}...", key); installedVersions.Add(key, Task.CompletedTask); installedVersionPaths.Add(ioManager.ResolvePath(key), version); return; @@ -308,11 +306,11 @@ namespace Tgstation.Server.Host.Components.Byond } if (customVersionStream != null) - logger.LogInformation("Installing custom BYOND version as {0}...", versionKey); + logger.LogInformation("Installing custom BYOND version as {versionKey}...", versionKey); else if (version.Build > 0) throw new JobException(ErrorCode.ByondNonExistentCustomVersion); else - logger.LogDebug("Requested BYOND version {0} not currently installed. Doing so now...", versionKey); + logger.LogDebug("Requested BYOND version {versionKey} not currently installed. Doing so now...", versionKey); // okay up to us to install it then try @@ -342,7 +340,7 @@ namespace Tgstation.Server.Host.Components.Byond using (downloadedStream) { await directoryCleanupTask; - logger.LogTrace("Extracting downloaded BYOND zip to {0}...", extractPath); + logger.LogTrace("Extracting downloaded BYOND zip to {extractPath}...", extractPath); await ioManager.ZipToDirectory(extractPath, versionZipStream, cancellationToken); } @@ -374,7 +372,7 @@ namespace Tgstation.Server.Host.Components.Byond } catch (Exception e) { - if (!(e is OperationCanceledException)) + if (e is not OperationCanceledException) await eventConsumer.HandleEvent(EventType.ByondInstallFail, new List { e.Message }, cancellationToken); lock (installedVersions) installedVersions.Remove(versionKey); diff --git a/src/Tgstation.Server.Host/Components/Chat/Providers/DiscordProvider.cs b/src/Tgstation.Server.Host/Components/Chat/Providers/DiscordProvider.cs index 336d52df48..bd29609528 100644 --- a/src/Tgstation.Server.Host/Components/Chat/Providers/DiscordProvider.cs +++ b/src/Tgstation.Server.Host/Components/Chat/Providers/DiscordProvider.cs @@ -145,14 +145,14 @@ namespace Tgstation.Server.Host.Components.Chat.Providers new EmbedField( "Local Commit", localCommitPushed && gitHub - ? $"[{revisionInformation.CommitSha.Substring(0, 7)}](https://github.com/{gitHubOwner}/{gitHubRepo}/commit/{revisionInformation.CommitSha})" - : revisionInformation.CommitSha.Substring(0, 7), + ? $"[{revisionInformation.CommitSha[..7]}](https://github.com/{gitHubOwner}/{gitHubRepo}/commit/{revisionInformation.CommitSha})" + : revisionInformation.CommitSha[..7], true), new EmbedField( "Branch Commit", gitHub - ? $"[{revisionInformation.OriginCommitSha.Substring(0, 7)}](https://github.com/{gitHubOwner}/{gitHubRepo}/commit/{revisionInformation.OriginCommitSha})" - : revisionInformation.OriginCommitSha.Substring(0, 7), + ? $"[{revisionInformation.OriginCommitSha[..7]}](https://github.com/{gitHubOwner}/{gitHubRepo}/commit/{revisionInformation.OriginCommitSha})" + : revisionInformation.OriginCommitSha[..7], true), }; @@ -160,7 +160,7 @@ namespace Tgstation.Server.Host.Components.Chat.Providers .Select(x => x.TestMerge) .Select(x => new EmbedField( $"#{x.Number}", - $"[{x.TitleAtMerge}]({x.Url}) by _[@{x.Author}](https://github.com/{x.Author})_{Environment.NewLine}Commit: [{x.TargetCommitSha.Substring(0, 7)}](https://github.com/{gitHubOwner}/{gitHubRepo}/commit/{x.TargetCommitSha}){(String.IsNullOrWhiteSpace(x.Comment) ? String.Empty : $"{Environment.NewLine}_**{x.Comment}**_")}", + $"[{x.TitleAtMerge}]({x.Url}) by _[@{x.Author}](https://github.com/{x.Author})_{Environment.NewLine}Commit: [{x.TargetCommitSha[..7]}](https://github.com/{gitHubOwner}/{gitHubRepo}/commit/{x.TargetCommitSha}){(String.IsNullOrWhiteSpace(x.Comment) ? String.Empty : $"{Environment.NewLine}_**{x.Comment}**_")}", false))); return fields; @@ -253,7 +253,7 @@ namespace Tgstation.Server.Host.Components.Chat.Providers if (!result.IsSuccess) Logger.LogWarning( - "Failed to send to channel {0}: {1}", + "Failed to send to channel {channelId}: {error}", channelId, result.Error); } @@ -267,7 +267,7 @@ namespace Tgstation.Server.Host.Components.Chat.Providers if (!currentGuildsResponse.IsSuccess) { Logger.LogWarning( - "Error retrieving current discord guilds: {0}", + "Error retrieving current discord guilds: {error}", currentGuildsResponse.Error.Message); return; } @@ -758,10 +758,10 @@ namespace Tgstation.Server.Host.Components.Chat.Providers if (embed == null) return default; - List embedErrors = new List(); + var embedErrors = new List(); Optional colour = default; if (embed.Colour != null) - if (Int32.TryParse(embed.Colour.Substring(1), NumberStyles.HexNumber, CultureInfo.InvariantCulture, out var argb)) + if (Int32.TryParse(embed.Colour[1..], NumberStyles.HexNumber, CultureInfo.InvariantCulture, out var argb)) colour = Color.FromArgb(argb); else embedErrors.Add( diff --git a/src/Tgstation.Server.Host/Components/Chat/Providers/IrcProvider.cs b/src/Tgstation.Server.Host/Components/Chat/Providers/IrcProvider.cs index 01badafabf..5d08910ed9 100644 --- a/src/Tgstation.Server.Host/Components/Chat/Providers/IrcProvider.cs +++ b/src/Tgstation.Server.Host/Components/Chat/Providers/IrcProvider.cs @@ -168,8 +168,7 @@ namespace Tgstation.Server.Host.Components.Chat.Providers // IRC doesn't allow newlines // Explicitly ignore embeds var messageText = message.Text; - if (messageText == null) - messageText = $"Embed Only: {JsonConvert.SerializeObject(message.Embed)}"; + messageText ??= $"Embed Only: {JsonConvert.SerializeObject(message.Embed)}"; messageText = String.Concat( messageText diff --git a/src/Tgstation.Server.Host/Extensions/TaskExtensions.cs b/src/Tgstation.Server.Host/Extensions/TaskExtensions.cs index c00389ba89..a8ee467d1e 100644 --- a/src/Tgstation.Server.Host/Extensions/TaskExtensions.cs +++ b/src/Tgstation.Server.Host/Extensions/TaskExtensions.cs @@ -12,7 +12,7 @@ namespace Tgstation.Server.Host.Extensions /// /// A that never completes. /// - private static readonly TaskCompletionSource InfiniteTaskCompletionSource = new TaskCompletionSource(); + static readonly TaskCompletionSource InfiniteTaskCompletionSource = new (); /// /// Create a that can be awaited while respecting a given . diff --git a/src/Tgstation.Server.Host/Setup/SetupWizard.cs b/src/Tgstation.Server.Host/Setup/SetupWizard.cs index b446cd81b2..8cad54e41c 100644 --- a/src/Tgstation.Server.Host/Setup/SetupWizard.cs +++ b/src/Tgstation.Server.Host/Setup/SetupWizard.cs @@ -240,9 +240,7 @@ namespace Tgstation.Server.Host.Setup using (var command = testConnection.CreateCommand()) { // I really don't care about user sanitization here, they want to fuck their own DB? so be it -#pragma warning disable CA2100 // Review SQL queries for security vulnerabilities command.CommandText = $"CREATE DATABASE {databaseName}"; -#pragma warning restore CA2100 // Review SQL queries for security vulnerabilities await command.ExecuteNonQueryAsync(cancellationToken); } @@ -250,9 +248,7 @@ namespace Tgstation.Server.Host.Setup await console.WriteAsync("Dropping test database...", true, cancellationToken); using (var command = testConnection.CreateCommand()) { -#pragma warning disable CA2100 // Review SQL queries for security vulnerabilities command.CommandText = $"DROP DATABASE {databaseName}"; -#pragma warning restore CA2100 // Review SQL queries for security vulnerabilities try { await command.ExecuteNonQueryAsync(cancellationToken); diff --git a/src/Tgstation.Server.Host/Swarm/SwarmService.cs b/src/Tgstation.Server.Host/Swarm/SwarmService.cs index f8da1e612f..ca584b9cfb 100644 --- a/src/Tgstation.Server.Host/Swarm/SwarmService.cs +++ b/src/Tgstation.Server.Host/Swarm/SwarmService.cs @@ -51,7 +51,7 @@ namespace Tgstation.Server.Host.Swarm /// /// See for the swarm system. /// - static readonly JsonSerializerSettings SerializerSettings = new JsonSerializerSettings + static readonly JsonSerializerSettings SerializerSettings = new () { ContractResolver = new DefaultContractResolver { @@ -917,7 +917,7 @@ namespace Tgstation.Server.Host.Swarm response.EnsureSuccessStatusCode(); return; } - catch (Exception ex) when (!(ex is OperationCanceledException)) + catch (Exception ex) when (ex is not OperationCanceledException) { logger.LogWarning( ex, @@ -1068,7 +1068,7 @@ namespace Tgstation.Server.Host.Swarm logger.LogWarning("Error registering with swarm controller: HTTP {0}", response.StatusCode); try { - var responseData = await response.Content.ReadAsStringAsync(); + var responseData = await response.Content.ReadAsStringAsync(cancellationToken); if (!String.IsNullOrWhiteSpace(responseData)) logger.LogDebug("Response:{0}{1}", Environment.NewLine, responseData); } @@ -1114,7 +1114,7 @@ namespace Tgstation.Server.Host.Swarm using var response = await httpClient.SendAsync(request, cancellationToken); response.EnsureSuccessStatusCode(); } - catch (Exception ex) when (!(ex is OperationCanceledException)) + catch (Exception ex) when (ex is not OperationCanceledException) { logger.LogWarning(ex, "Error during swarm server list update for node '{0}'! Unregistering...", swarmServer.Identifier); @@ -1268,7 +1268,7 @@ namespace Tgstation.Server.Host.Swarm else await HealthCheckController(cancellationToken); } - catch (Exception ex) when (!(ex is OperationCanceledException)) + catch (Exception ex) when (ex is not OperationCanceledException) { logger.LogError(ex, "Health check error!"); }