diff --git a/ArchiSteamFarm.Tests/nuget.config b/ArchiSteamFarm.Tests/nuget.config
index 1e0380dbb..ba0d4cac3 100644
--- a/ArchiSteamFarm.Tests/nuget.config
+++ b/ArchiSteamFarm.Tests/nuget.config
@@ -1,6 +1,7 @@
-
+
+
-
-
-
-
+
+
+
+
\ No newline at end of file
diff --git a/ArchiSteamFarm.sln.DotSettings b/ArchiSteamFarm.sln.DotSettings
index 1f0b89f02..079292a6c 100644
--- a/ArchiSteamFarm.sln.DotSettings
+++ b/ArchiSteamFarm.sln.DotSettings
@@ -56,6 +56,7 @@
WARNINGWARNINGSUGGESTION
+ SUGGESTIONSUGGESTIONSUGGESTIONHINT
@@ -147,6 +148,7 @@
SUGGESTIONSUGGESTIONSUGGESTION
+ SUGGESTIONSUGGESTIONSUGGESTION
@@ -197,7 +199,7 @@
FalseFalseFalse
- False
+ TrueFalseTrueTrue
@@ -236,6 +238,14 @@
USE_TABS_ONLYUSE_TABS_ONLYUSE_TABS_ONLY
+ Tab
+ True
+ OnSingleLine
+ ByFirstAttr
+ OnSingleLine
+ False
+ 10000
+ FalseUSE_TABS_ONLY22
diff --git a/ArchiSteamFarm/IPC/Controllers/Api/ASFController.cs b/ArchiSteamFarm/IPC/Controllers/Api/ASFController.cs
index 22fbc813b..502b48c59 100644
--- a/ArchiSteamFarm/IPC/Controllers/Api/ASFController.cs
+++ b/ArchiSteamFarm/IPC/Controllers/Api/ASFController.cs
@@ -32,7 +32,7 @@ namespace ArchiSteamFarm.IPC.Controllers.Api {
[Route("Api/ASF")]
public sealed class ASFController : ArchiController {
///
- /// Fetches common info related to ASF as a whole.
+ /// Fetches common info related to ASF as a whole.
///
[HttpGet]
[ProducesResponseType(typeof(GenericResponse), 200)]
@@ -50,7 +50,7 @@ namespace ArchiSteamFarm.IPC.Controllers.Api {
}
///
- /// Updates ASF's global config.
+ /// Updates ASF's global config.
///
[Consumes("application/json")]
[HttpPost]
@@ -80,7 +80,7 @@ namespace ArchiSteamFarm.IPC.Controllers.Api {
}
///
- /// Makes ASF shutdown itself.
+ /// Makes ASF shutdown itself.
///
[HttpPost("Exit")]
[ProducesResponseType(typeof(GenericResponse), 200)]
@@ -90,7 +90,7 @@ namespace ArchiSteamFarm.IPC.Controllers.Api {
}
///
- /// Makes ASF restart itself.
+ /// Makes ASF restart itself.
///
[HttpPost("Restart")]
[ProducesResponseType(typeof(GenericResponse), 200)]
@@ -100,7 +100,7 @@ namespace ArchiSteamFarm.IPC.Controllers.Api {
}
///
- /// Makes ASF update itself.
+ /// Makes ASF update itself.
///
[HttpPost("Update")]
[ProducesResponseType(typeof(GenericResponse), 200)]
diff --git a/ArchiSteamFarm/IPC/Controllers/Api/BotController.cs b/ArchiSteamFarm/IPC/Controllers/Api/BotController.cs
index 0de25760e..7e6b4e9c3 100644
--- a/ArchiSteamFarm/IPC/Controllers/Api/BotController.cs
+++ b/ArchiSteamFarm/IPC/Controllers/Api/BotController.cs
@@ -34,7 +34,7 @@ namespace ArchiSteamFarm.IPC.Controllers.Api {
[Route("Api/Bot")]
public sealed class BotController : ArchiController {
///
- /// Deletes all files related to given bots.
+ /// Deletes all files related to given bots.
///
[HttpDelete("{botNames:required}")]
[ProducesResponseType(typeof(GenericResponse), 200)]
@@ -54,7 +54,7 @@ namespace ArchiSteamFarm.IPC.Controllers.Api {
}
///
- /// Fetches common info related to given bots.
+ /// Fetches common info related to given bots.
///
[HttpGet("{botNames:required}")]
[ProducesResponseType(typeof(GenericResponse>), 200)]
@@ -73,7 +73,7 @@ namespace ArchiSteamFarm.IPC.Controllers.Api {
}
///
- /// Updates bot config of given bot.
+ /// Updates bot config of given bot.
///
[Consumes("application/json")]
[HttpPost("{botName:required}")]
@@ -113,7 +113,7 @@ namespace ArchiSteamFarm.IPC.Controllers.Api {
}
///
- /// Removes BGR output files of given bots.
+ /// Removes BGR output files of given bots.
///
[HttpDelete("{botNames:required}/GamesToRedeemInBackground")]
[ProducesResponseType(typeof(GenericResponse), 200)]
@@ -133,7 +133,7 @@ namespace ArchiSteamFarm.IPC.Controllers.Api {
}
///
- /// Fetches BGR output files of given bots.
+ /// Fetches BGR output files of given bots.
///
[HttpGet("{botNames:required}/GamesToRedeemInBackground")]
[ProducesResponseType(typeof(GenericResponse>), 200)]
@@ -161,7 +161,7 @@ namespace ArchiSteamFarm.IPC.Controllers.Api {
}
///
- /// Adds keys to redeem using BGR to given bot.
+ /// Adds keys to redeem using BGR to given bot.
///
[Consumes("application/json")]
[HttpPost("{botName:required}/GamesToRedeemInBackground")]
@@ -185,7 +185,7 @@ namespace ArchiSteamFarm.IPC.Controllers.Api {
}
///
- /// Pauses given bots.
+ /// Pauses given bots.
///
[Consumes("application/json")]
[HttpPost("{botNames:required}/Pause")]
@@ -206,7 +206,7 @@ namespace ArchiSteamFarm.IPC.Controllers.Api {
}
///
- /// Resumes given bots.
+ /// Resumes given bots.
///
[HttpPost("{botNames:required}/Resume")]
[ProducesResponseType(typeof(GenericResponse), 200)]
@@ -226,7 +226,7 @@ namespace ArchiSteamFarm.IPC.Controllers.Api {
}
///
- /// Starts given bots.
+ /// Starts given bots.
///
[HttpPost("{botNames:required}/Start")]
[ProducesResponseType(typeof(GenericResponse), 200)]
@@ -246,7 +246,7 @@ namespace ArchiSteamFarm.IPC.Controllers.Api {
}
///
- /// Stops given bots.
+ /// Stops given bots.
///
[HttpPost("{botNames:required}/Stop")]
[ProducesResponseType(typeof(GenericResponse), 200)]
diff --git a/ArchiSteamFarm/IPC/Controllers/Api/CommandController.cs b/ArchiSteamFarm/IPC/Controllers/Api/CommandController.cs
index d2bd32843..5d807155e 100644
--- a/ArchiSteamFarm/IPC/Controllers/Api/CommandController.cs
+++ b/ArchiSteamFarm/IPC/Controllers/Api/CommandController.cs
@@ -30,11 +30,11 @@ namespace ArchiSteamFarm.IPC.Controllers.Api {
[Route("Api/Command")]
public sealed class CommandController : ArchiController {
///
- /// Executes a command.
+ /// Executes a command.
///
///
- /// This API endpoint is supposed to be entirely replaced by ASF actions available under /Api/ASF/{action} and /Api/Bot/{bot}/{action}.
- /// You should use "given bot" commands when executing this endpoint, omitting targets of the command will cause the command to be executed on first defined bot
+ /// This API endpoint is supposed to be entirely replaced by ASF actions available under /Api/ASF/{action} and /Api/Bot/{bot}/{action}.
+ /// You should use "given bot" commands when executing this endpoint, omitting targets of the command will cause the command to be executed on first defined bot
///
[HttpPost("{command:required}")]
[ProducesResponseType(typeof(GenericResponse), 200)]
diff --git a/ArchiSteamFarm/IPC/Controllers/Api/NLogController.cs b/ArchiSteamFarm/IPC/Controllers/Api/NLogController.cs
index 84bf20803..fbd7a4bfa 100644
--- a/ArchiSteamFarm/IPC/Controllers/Api/NLogController.cs
+++ b/ArchiSteamFarm/IPC/Controllers/Api/NLogController.cs
@@ -38,10 +38,10 @@ namespace ArchiSteamFarm.IPC.Controllers.Api {
private static readonly ConcurrentDictionary ActiveLogWebSockets = new ConcurrentDictionary();
///
- /// Fetches ASF log in realtime.
+ /// Fetches ASF log in realtime.
///
///
- /// This API endpoint requires a websocket connection.
+ /// This API endpoint requires a websocket connection.
///
[HttpGet]
[ProducesResponseType(typeof(IEnumerable>), 200)]
diff --git a/ArchiSteamFarm/IPC/Controllers/Api/StructureController.cs b/ArchiSteamFarm/IPC/Controllers/Api/StructureController.cs
index d8b42d0ea..35eb0a110 100644
--- a/ArchiSteamFarm/IPC/Controllers/Api/StructureController.cs
+++ b/ArchiSteamFarm/IPC/Controllers/Api/StructureController.cs
@@ -28,10 +28,10 @@ namespace ArchiSteamFarm.IPC.Controllers.Api {
[Route("Api/Structure")]
public sealed class StructureController : ArchiController {
///
- /// Fetches structure of given type.
+ /// Fetches structure of given type.
///
///
- /// Structure is defined as a representation of given object in its default state.
+ /// Structure is defined as a representation of given object in its default state.
///
[HttpGet("{structure:required}")]
[ProducesResponseType(typeof(GenericResponse