diff --git a/build/Version.props b/build/Version.props
index 63918ebbe0..9ef2360ec9 100644
--- a/build/Version.props
+++ b/build/Version.props
@@ -3,7 +3,7 @@
- 5.8.0
+ 5.9.0
4.5.0
9.9.0
10.3.0
diff --git a/src/DMAPI/tgs/v5/api.dm b/src/DMAPI/tgs/v5/api.dm
index 4bf593f35d..4d08ec194d 100644
--- a/src/DMAPI/tgs/v5/api.dm
+++ b/src/DMAPI/tgs/v5/api.dm
@@ -101,8 +101,7 @@
var/list/response = list()
if(error_message)
response[DMAPI5_RESPONSE_ERROR_MESSAGE] = error_message
- return json_encode(response)
- return "{}"
+ return response
/datum/tgs_api/v5/OnTopic(T)
RequireInitialBridgeResponse()
@@ -127,17 +126,20 @@
if(!isnum(command))
return TopicResponse("Failed to decode [DMAPI5_TOPIC_PARAMETER_COMMAND_TYPE] from: [json]!")
+ var/result = ProcessTopicCommand(command, topic_parameters)
+ if(!length(result))
+ return "{}" // quirk of json_encode is an empty list returns "[]"
+
+ return json_encode(result)
+
+/datum/tgs_api/v5/proc/ProcessTopicCommand(command, list/topic_parameters)
switch(command)
if(DMAPI5_TOPIC_COMMAND_CHAT_COMMAND)
intercepted_message_queue = list()
- var/result = HandleCustomCommand(topic_parameters[DMAPI5_TOPIC_PARAMETER_CHAT_COMMAND])
+ var/list/result = HandleCustomCommand(topic_parameters[DMAPI5_TOPIC_PARAMETER_CHAT_COMMAND])
if(!result)
result = TopicResponse("Error running chat command!")
- //TODO: make this not need the decode/encode.
- if (length(intercepted_message_queue))
- var/list/result_array = json_decode(result)
- result_array[DMAPI5_TOPIC_RESPONSE_CHAT_RESPONSES] = intercepted_message_queue
- result = json_encode(result_array)
+ result[DMAPI5_TOPIC_RESPONSE_CHAT_RESPONSES] = intercepted_message_queue
intercepted_message_queue = null
return result
if(DMAPI5_TOPIC_COMMAND_EVENT_NOTIFICATION)
@@ -161,10 +163,10 @@
if(event_handler != null)
event_handler.HandleEvent(arglist(event_call))
- var/list/response = list()
+ var/list/response = TopicResponse()
response[DMAPI5_TOPIC_RESPONSE_CHAT_RESPONSES] = intercepted_message_queue
intercepted_message_queue = null
- return json_encode(response)
+ return response
if(DMAPI5_TOPIC_COMMAND_CHANGE_PORT)
var/new_port = topic_parameters[DMAPI5_TOPIC_PARAMETER_NEW_PORT]
if (!isnum(new_port) || !(new_port > 0))
@@ -236,7 +238,9 @@
version = new_version
- return json_encode(list(DMAPI5_RESPONSE_ERROR_MESSAGE = error_message, DMAPI5_PARAMETER_CUSTOM_COMMANDS = ListCustomCommands()))
+ var/list/reattach_response = TopicResponse(error_message)
+ reattach_response[DMAPI5_PARAMETER_CUSTOM_COMMANDS] = ListCustomCommands()
+ return reattach_response
return TopicResponse("Unknown command: [command]")
diff --git a/src/DMAPI/tgs/v5/commands.dm b/src/DMAPI/tgs/v5/commands.dm
index 71ede42c3b..a832c81f17 100644
--- a/src/DMAPI/tgs/v5/commands.dm
+++ b/src/DMAPI/tgs/v5/commands.dm
@@ -36,10 +36,10 @@
var/datum/tgs_message_content/response = sc.Run(u, params)
response = UpgradeDeprecatedCommandResponse(response, command)
- var/list/topic_response = list()
+ var/list/topic_response = TopicResponse()
topic_response[DMAPI5_TOPIC_RESPONSE_COMMAND_RESPONSE_MESSAGE] = response?.text
topic_response[DMAPI5_TOPIC_RESPONSE_COMMAND_RESPONSE] = response?._interop_serialize()
- return json_encode(topic_response)
+ return topic_response
return TopicResponse("Unknown custom chat command: [command]!")
// Common proc b/c it's used by the V3/V4 APIs
diff --git a/src/Tgstation.Server.Api/Tgstation.Server.Api.csproj b/src/Tgstation.Server.Api/Tgstation.Server.Api.csproj
index f079f488db..c67ed86f87 100644
--- a/src/Tgstation.Server.Api/Tgstation.Server.Api.csproj
+++ b/src/Tgstation.Server.Api/Tgstation.Server.Api.csproj
@@ -46,12 +46,16 @@
+
+
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
+
diff --git a/src/Tgstation.Server.Client/Tgstation.Server.Client.csproj b/src/Tgstation.Server.Client/Tgstation.Server.Client.csproj
index 6ef0426a5b..9ea8c721cd 100644
--- a/src/Tgstation.Server.Client/Tgstation.Server.Client.csproj
+++ b/src/Tgstation.Server.Client/Tgstation.Server.Client.csproj
@@ -1,4 +1,4 @@
-
+
@@ -32,6 +32,7 @@
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
diff --git a/src/Tgstation.Server.Host.Console/Tgstation.Server.Host.Console.csproj b/src/Tgstation.Server.Host.Console/Tgstation.Server.Host.Console.csproj
index 9ab96c2f7b..045d8ce9eb 100644
--- a/src/Tgstation.Server.Host.Console/Tgstation.Server.Host.Console.csproj
+++ b/src/Tgstation.Server.Host.Console/Tgstation.Server.Host.Console.csproj
@@ -24,8 +24,9 @@
-
+
+
all
runtime; build; native; contentfiles; analyzers
diff --git a/src/Tgstation.Server.Host.Service/Tgstation.Server.Host.Service.csproj b/src/Tgstation.Server.Host.Service/Tgstation.Server.Host.Service.csproj
index 23ad2e5d76..5499f045f7 100644
--- a/src/Tgstation.Server.Host.Service/Tgstation.Server.Host.Service.csproj
+++ b/src/Tgstation.Server.Host.Service/Tgstation.Server.Host.Service.csproj
@@ -23,17 +23,18 @@
+
-
- all
- runtime; build; native; contentfiles; analyzers; buildtransitive
-
+
+
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
+
diff --git a/src/Tgstation.Server.Host.Watchdog/Tgstation.Server.Host.Watchdog.csproj b/src/Tgstation.Server.Host.Watchdog/Tgstation.Server.Host.Watchdog.csproj
index 763e986d9d..972487c7dd 100644
--- a/src/Tgstation.Server.Host.Watchdog/Tgstation.Server.Host.Watchdog.csproj
+++ b/src/Tgstation.Server.Host.Watchdog/Tgstation.Server.Host.Watchdog.csproj
@@ -24,12 +24,9 @@
-
- all
- runtime; build; native; contentfiles; analyzers; buildtransitive
-
-
+
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
diff --git a/src/Tgstation.Server.Host/Components/Byond/ByondManager.cs b/src/Tgstation.Server.Host/Components/Byond/ByondManager.cs
index 76f5ebce25..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;
@@ -276,7 +274,7 @@ namespace Tgstation.Server.Host.Components.Byond
/// A representing the running operation.
async Task InstallVersion(Version version, Stream customVersionStream, CancellationToken cancellationToken)
{
- var ourTcs = new TaskCompletionSource