diff --git a/PluralKit.Bot/PluralKit.Bot.csproj b/PluralKit.Bot/PluralKit.Bot.csproj index 753d1f30..152d736a 100644 --- a/PluralKit.Bot/PluralKit.Bot.csproj +++ b/PluralKit.Bot/PluralKit.Bot.csproj @@ -24,6 +24,6 @@ - + diff --git a/PluralKit.Bot/Services/HttpListenerService.cs b/PluralKit.Bot/Services/HttpListenerService.cs index bafeae41..d2bfc4ce 100644 --- a/PluralKit.Bot/Services/HttpListenerService.cs +++ b/PluralKit.Bot/Services/HttpListenerService.cs @@ -1,4 +1,3 @@ -using System.Text; using System.Text.Json; using Serilog; @@ -58,7 +57,7 @@ public class HttpListenerService private async Task RuntimeConfigSet(HttpContextBase ctx) { var key = ctx.Request.Url.Parameters["key"]; - var value = ReadStream(ctx.Request.Data, ctx.Request.ContentLength); + var value = ctx.Request.DataAsString; await _runtimeConfig.Set(key, value); await RuntimeConfigGet(ctx); } @@ -77,7 +76,7 @@ public class HttpListenerService var shardIdString = ctx.Request.Url.Parameters["shard_id"]; if (!int.TryParse(shardIdString, out var shardId)) return; - var packet = JsonSerializer.Deserialize(ReadStream(ctx.Request.Data, ctx.Request.ContentLength), _jsonSerializerOptions); + var packet = JsonSerializer.Deserialize(ctx.Request.DataAsString, _jsonSerializerOptions); var evt = DeserializeEvent(shardId, packet.EventType!, (JsonElement)packet.Payload!); if (evt != null) { @@ -108,39 +107,4 @@ public class HttpListenerService return null; } } - - //temporary re-implementation of the ReadStream function found in WatsonWebserver.Lite, but with handling for closed connections - //https://github.com/dotnet/WatsonWebserver/issues/171 - private static string ReadStream(Stream input, long contentLength) - { - if (input == null) throw new ArgumentNullException(nameof(input)); - if (!input.CanRead) throw new InvalidOperationException("Input stream is not readable"); - if (contentLength < 1) return ""; - - byte[] buffer = new byte[65536]; - long bytesRemaining = contentLength; - - using (MemoryStream ms = new MemoryStream()) - { - int read; - - while (bytesRemaining > 0) - { - read = input.Read(buffer, 0, buffer.Length); - if (read > 0) - { - ms.Write(buffer, 0, read); - bytesRemaining -= read; - } - else - { - throw new IOException("Connection closed before reading end of stream."); - } - } - - if (ms.Length < 1) return null; - var str = Encoding.Default.GetString(ms.ToArray()); - return str; - } - } } \ No newline at end of file diff --git a/PluralKit.Bot/packages.lock.json b/PluralKit.Bot/packages.lock.json index 449923d9..25e461cf 100644 --- a/PluralKit.Bot/packages.lock.json +++ b/PluralKit.Bot/packages.lock.json @@ -16,12 +16,12 @@ }, "Watson.Lite": { "type": "Direct", - "requested": "[6.3.5, )", - "resolved": "6.3.5", - "contentHash": "YF8+se3IVenn8YlyNeb4wSJK6QMnVD0QHIOEiZ22wS4K2wkwoSDzWS+ZAjk1MaPeB+XO5gRoENUN//pOc+wI2g==", + "requested": "[6.3.12, )", + "resolved": "6.3.12", + "contentHash": "L/TfJadyOwK9bhhvOnEKXLeyDaTAn8v6hnYPVPIwQ7JlnUXDbDqsUa3qHFdFIHiuK8vMZOnDL7+k/mY10yxdYw==", "dependencies": { - "CavemanTcp": "2.0.5", - "Watson.Core": "6.3.5" + "CavemanTcp": "2.0.9", + "Watson.Core": "6.3.12" } }, "App.Metrics": { @@ -119,8 +119,8 @@ }, "CavemanTcp": { "type": "Transitive", - "resolved": "2.0.5", - "contentHash": "90wywmGpjrj26HMAkufYZwuZI8sVYB1mRwEdqugSR3kgDnPX+3l0jO86gwtFKsPvsEpsS4Dn/1EbhguzUxMU8Q==" + "resolved": "2.0.9", + "contentHash": "KgIwYhPhGkBTm+wwVAmWonkKPw4xYVnutzzlIeqOLcX1fti+8d+MEGTvbern1smf3S/UpjFjihkf6XRziTddzQ==" }, "Dapper": { "type": "Transitive", @@ -746,8 +746,8 @@ }, "Watson.Core": { "type": "Transitive", - "resolved": "6.3.5", - "contentHash": "Y5YxKOCSLe2KDmfwvI/J0qApgmmZR77LwyoufRVfKH7GLdHiE7fY0IfoNxWTG7nNv8knBfgwyOxdehRm+4HaCg==", + "resolved": "6.3.12", + "contentHash": "lCWv+7rz++z/1ceu+aBdJYw+nO7u/dgXxVYrmdUO/3ylFeEbbPQP19MYjOJbhSQY4+bmQRex79YJ1IneLZhprA==", "dependencies": { "IpMatcher": "1.0.5", "RegexMatcher": "1.0.9", diff --git a/PluralKit.Tests/packages.lock.json b/PluralKit.Tests/packages.lock.json index ce0dbc15..bffeb33d 100644 --- a/PluralKit.Tests/packages.lock.json +++ b/PluralKit.Tests/packages.lock.json @@ -130,8 +130,8 @@ }, "CavemanTcp": { "type": "Transitive", - "resolved": "2.0.5", - "contentHash": "90wywmGpjrj26HMAkufYZwuZI8sVYB1mRwEdqugSR3kgDnPX+3l0jO86gwtFKsPvsEpsS4Dn/1EbhguzUxMU8Q==" + "resolved": "2.0.9", + "contentHash": "KgIwYhPhGkBTm+wwVAmWonkKPw4xYVnutzzlIeqOLcX1fti+8d+MEGTvbern1smf3S/UpjFjihkf6XRziTddzQ==" }, "Dapper": { "type": "Transitive", @@ -912,8 +912,8 @@ }, "Watson.Core": { "type": "Transitive", - "resolved": "6.3.5", - "contentHash": "Y5YxKOCSLe2KDmfwvI/J0qApgmmZR77LwyoufRVfKH7GLdHiE7fY0IfoNxWTG7nNv8knBfgwyOxdehRm+4HaCg==", + "resolved": "6.3.12", + "contentHash": "lCWv+7rz++z/1ceu+aBdJYw+nO7u/dgXxVYrmdUO/3ylFeEbbPQP19MYjOJbhSQY4+bmQRex79YJ1IneLZhprA==", "dependencies": { "IpMatcher": "1.0.5", "RegexMatcher": "1.0.9", @@ -924,11 +924,11 @@ }, "Watson.Lite": { "type": "Transitive", - "resolved": "6.3.5", - "contentHash": "YF8+se3IVenn8YlyNeb4wSJK6QMnVD0QHIOEiZ22wS4K2wkwoSDzWS+ZAjk1MaPeB+XO5gRoENUN//pOc+wI2g==", + "resolved": "6.3.12", + "contentHash": "L/TfJadyOwK9bhhvOnEKXLeyDaTAn8v6hnYPVPIwQ7JlnUXDbDqsUa3qHFdFIHiuK8vMZOnDL7+k/mY10yxdYw==", "dependencies": { - "CavemanTcp": "2.0.5", - "Watson.Core": "6.3.5" + "CavemanTcp": "2.0.9", + "Watson.Core": "6.3.12" } }, "xunit.abstractions": { @@ -1001,7 +1001,7 @@ "Myriad": "[1.0.0, )", "PluralKit.Core": "[1.0.0, )", "Sentry": "[4.13.0, )", - "Watson.Lite": "[6.3.5, )" + "Watson.Lite": "[6.3.12, )" } }, "pluralkit.core": {