diff --git a/src/SKIT.FlurlHttpClient.Wechat/Converters/Newtonsoft.Json/CommonDateTimeOffsetConverter.cs b/src/SKIT.FlurlHttpClient.Wechat/Converters/Newtonsoft.Json/CommonDateTimeOffsetConverter.cs deleted file mode 100644 index 4cd08c4a..00000000 --- a/src/SKIT.FlurlHttpClient.Wechat/Converters/Newtonsoft.Json/CommonDateTimeOffsetConverter.cs +++ /dev/null @@ -1,32 +0,0 @@ -using System; -using System.Globalization; -using Newtonsoft.Json; -using Newtonsoft.Json.Converters; - -namespace Newtonsoft.Json.Converters -{ - public class CommonDateTimeOffsetConverter : JsonConverter - { - private readonly JsonConverter _converter = new CommonNullableDateTimeOffsetConverter(); - - public override bool CanRead - { - get { return true; } - } - - public override bool CanWrite - { - get { return true; } - } - - public override DateTimeOffset ReadJson(JsonReader reader, Type objectType, DateTimeOffset existingValue, bool hasExistingValue, JsonSerializer serializer) - { - return _converter.ReadJson(reader, objectType, existingValue, hasExistingValue, serializer) ?? default; - } - - public override void WriteJson(JsonWriter writer, DateTimeOffset value, JsonSerializer serializer) - { - _converter.WriteJson(writer, value, serializer); - } - } -} diff --git a/src/SKIT.FlurlHttpClient.Wechat/Converters/Newtonsoft.Json/CommonNullableDateTimeOffsetConverter.cs b/src/SKIT.FlurlHttpClient.Wechat/Converters/Newtonsoft.Json/CommonNullableDateTimeOffsetConverter.cs deleted file mode 100644 index 96b2ac27..00000000 --- a/src/SKIT.FlurlHttpClient.Wechat/Converters/Newtonsoft.Json/CommonNullableDateTimeOffsetConverter.cs +++ /dev/null @@ -1,57 +0,0 @@ -using System; -using System.Globalization; -using Newtonsoft.Json; -using Newtonsoft.Json.Converters; - -namespace Newtonsoft.Json.Converters -{ - public class CommonNullableDateTimeOffsetConverter : JsonConverter - { - internal const string DATETIME_FORMAT = "yyyy-MM-dd HH:mm:ss"; - - public override bool CanRead - { - get { return true; } - } - - public override bool CanWrite - { - get { return true; } - } - - public override DateTimeOffset? ReadJson(JsonReader reader, Type objectType, DateTimeOffset? existingValue, bool hasExistingValue, JsonSerializer serializer) - { - if (reader.TokenType == JsonToken.Null) - { - return existingValue; - } - else if (reader.TokenType == JsonToken.String) - { - string? value = serializer.Deserialize(reader); - if (value == null) - return existingValue; - - if (DateTimeOffset.TryParseExact(value, DATETIME_FORMAT, DateTimeFormatInfo.InvariantInfo, DateTimeStyles.None, out DateTimeOffset result)) - return result; - - if (DateTimeOffset.TryParse(value, out result)) - return result; - } - else if (reader.TokenType == JsonToken.Date) - { - reader.DateFormatString = DATETIME_FORMAT; - return serializer.Deserialize(reader); - } - - throw new JsonReaderException(); - } - - public override void WriteJson(JsonWriter writer, DateTimeOffset? value, JsonSerializer serializer) - { - if (value.HasValue) - writer.WriteValue(value.Value.ToString(DATETIME_FORMAT, DateTimeFormatInfo.InvariantInfo)); - else - writer.WriteNull(); - } - } -} diff --git a/src/SKIT.FlurlHttpClient.Wechat/Converters/Newtonsoft.Json/JsonTypedStringArrayConverter.cs b/src/SKIT.FlurlHttpClient.Wechat/Converters/Newtonsoft.Json/JsonTypedStringArrayConverter.cs deleted file mode 100644 index 911415cf..00000000 --- a/src/SKIT.FlurlHttpClient.Wechat/Converters/Newtonsoft.Json/JsonTypedStringArrayConverter.cs +++ /dev/null @@ -1,52 +0,0 @@ -using System; -using System.Collections.Generic; -using Newtonsoft.Json; -using Newtonsoft.Json.Converters; - -namespace Newtonsoft.Json.Converters -{ - public class JsonTypedStringArrayConverter : JsonConverter - { - public override bool CanRead - { - get { return true; } - } - - public override bool CanWrite - { - get { return true; } - } - - public override string[]? ReadJson(JsonReader reader, Type objectType, string[]? existingValue, bool hasExistingValue, JsonSerializer serializer) - { - if (reader.TokenType == JsonToken.Null) - { - return null; - } - else if (reader.TokenType == JsonToken.String) - { - string? value = serializer.Deserialize(reader); - if (value == null) - return existingValue; - - if (value.StartsWith("[") && value.EndsWith("[")) - return JsonConvert.DeserializeObject(value); - - if (string.IsNullOrEmpty(value)) - return new string[0]; - else - return new string[1] { value }; - } - - throw new JsonReaderException(); - } - - public override void WriteJson(JsonWriter writer, string[]? value, JsonSerializer serializer) - { - if (value != null) - writer.WriteValue(JsonConvert.SerializeObject(value, Formatting.None)); - else - writer.WriteNull(); - } - } -} diff --git a/src/SKIT.FlurlHttpClient.Wechat/Converters/Newtonsoft.Json/JsonTypedStringIListConverter.cs b/src/SKIT.FlurlHttpClient.Wechat/Converters/Newtonsoft.Json/JsonTypedStringIListConverter.cs deleted file mode 100644 index a0b6801c..00000000 --- a/src/SKIT.FlurlHttpClient.Wechat/Converters/Newtonsoft.Json/JsonTypedStringIListConverter.cs +++ /dev/null @@ -1,44 +0,0 @@ -using System; -using System.Collections.Generic; -using Newtonsoft.Json; -using Newtonsoft.Json.Converters; - -namespace Newtonsoft.Json.Converters -{ - public class JsonTypedStringIListConverter : JsonConverter?> - { - private readonly JsonConverter?> _converter = new JsonTypedStringListConverter(); - - public override bool CanRead - { - get { return true; } - } - - public override bool CanWrite - { - get { return true; } - } - - public override IList? ReadJson(JsonReader reader, Type objectType, IList? existingValue, bool hasExistingValue, JsonSerializer serializer) - { - return _converter.ReadJson(reader, objectType, ConvertIListToList(existingValue), hasExistingValue, serializer); - } - - public override void WriteJson(JsonWriter writer, IList? value, JsonSerializer serializer) - { - _converter.WriteJson(writer, ConvertIListToList(value), serializer); - } - - private List? ConvertIListToList(IList? src) - { - if (src == null) - return null; - - List? dest = src as List; - if (dest != null) - return dest; - - return new List(src); - } - } -} diff --git a/src/SKIT.FlurlHttpClient.Wechat/Converters/Newtonsoft.Json/JsonTypedStringListConverter.cs b/src/SKIT.FlurlHttpClient.Wechat/Converters/Newtonsoft.Json/JsonTypedStringListConverter.cs deleted file mode 100644 index e9b20426..00000000 --- a/src/SKIT.FlurlHttpClient.Wechat/Converters/Newtonsoft.Json/JsonTypedStringListConverter.cs +++ /dev/null @@ -1,46 +0,0 @@ -using System; -using System.Collections.Generic; -using Newtonsoft.Json; -using Newtonsoft.Json.Converters; - -namespace Newtonsoft.Json.Converters -{ - public class JsonTypedStringListConverter : JsonConverter?> - { - public override bool CanRead - { - get { return true; } - } - - public override bool CanWrite - { - get { return true; } - } - - public override List? ReadJson(JsonReader reader, Type objectType, List? existingValue, bool hasExistingValue, JsonSerializer serializer) - { - if (reader.TokenType == JsonToken.Null) - { - return null; - } - else if (reader.TokenType == JsonToken.String) - { - string? value = serializer.Deserialize(reader); - if (value == null) - return existingValue; - - return JsonConvert.DeserializeObject>(value); - } - - throw new JsonReaderException(); - } - - public override void WriteJson(JsonWriter writer, List? value, JsonSerializer serializer) - { - if (value != null) - writer.WriteValue(JsonConvert.SerializeObject(value, Formatting.None)); - else - writer.WriteNull(); - } - } -} diff --git a/src/SKIT.FlurlHttpClient.Wechat/Converters/Newtonsoft.Json/NumberTypedBooleanConverter.cs b/src/SKIT.FlurlHttpClient.Wechat/Converters/Newtonsoft.Json/NumberTypedBooleanConverter.cs deleted file mode 100644 index dd23f248..00000000 --- a/src/SKIT.FlurlHttpClient.Wechat/Converters/Newtonsoft.Json/NumberTypedBooleanConverter.cs +++ /dev/null @@ -1,32 +0,0 @@ -using System; -using System.Collections.Generic; -using Newtonsoft.Json; -using Newtonsoft.Json.Converters; - -namespace Newtonsoft.Json.Converters -{ - public class NumberTypedBooleanConverter : JsonConverter - { - private readonly JsonConverter _converter = new NumberTypedNullableBooleanConverter(); - - public override bool CanRead - { - get { return true; } - } - - public override bool CanWrite - { - get { return true; } - } - - public override bool ReadJson(JsonReader reader, Type objectType, bool existingValue, bool hasExistingValue, JsonSerializer serializer) - { - return _converter.ReadJson(reader, objectType, existingValue, hasExistingValue, serializer) ?? default; - } - - public override void WriteJson(JsonWriter writer, bool value, JsonSerializer serializer) - { - _converter.WriteJson(writer, value, serializer); - } - } -} diff --git a/src/SKIT.FlurlHttpClient.Wechat/Converters/Newtonsoft.Json/NumberTypedNullableBooleanConverter.cs b/src/SKIT.FlurlHttpClient.Wechat/Converters/Newtonsoft.Json/NumberTypedNullableBooleanConverter.cs deleted file mode 100644 index 7430966c..00000000 --- a/src/SKIT.FlurlHttpClient.Wechat/Converters/Newtonsoft.Json/NumberTypedNullableBooleanConverter.cs +++ /dev/null @@ -1,56 +0,0 @@ -using System; -using System.Collections.Generic; -using Newtonsoft.Json; -using Newtonsoft.Json.Converters; - -namespace Newtonsoft.Json.Converters -{ - public class NumberTypedNullableBooleanConverter : JsonConverter - { - public override bool CanRead - { - get { return true; } - } - - public override bool CanWrite - { - get { return true; } - } - - public override bool? ReadJson(JsonReader reader, Type objectType, bool? existingValue, bool hasExistingValue, JsonSerializer serializer) - { - if (reader.TokenType == JsonToken.Null) - { - return existingValue; - } - else if (reader.TokenType == JsonToken.Boolean) - { - return serializer.Deserialize(reader); - } - else if (reader.TokenType == JsonToken.Integer) - { - int value = serializer.Deserialize(reader); - return Convert.ToBoolean(value); - } - else if (reader.TokenType == JsonToken.String) - { - string? str = serializer.Deserialize(reader); - if (str == null) - return existingValue; - - if (int.TryParse(str, out int value)) - return Convert.ToBoolean(value); - } - - throw new JsonReaderException(); - } - - public override void WriteJson(JsonWriter writer, bool? value, JsonSerializer serializer) - { - if (value.HasValue) - writer.WriteValue(value.Value ? 1 : 0); - else - writer.WriteNull(); - } - } -} diff --git a/src/SKIT.FlurlHttpClient.Wechat/Converters/Newtonsoft.Json/RFC3339DateTimeOffsetConverter.cs b/src/SKIT.FlurlHttpClient.Wechat/Converters/Newtonsoft.Json/RFC3339DateTimeOffsetConverter.cs deleted file mode 100644 index ec47a5c4..00000000 --- a/src/SKIT.FlurlHttpClient.Wechat/Converters/Newtonsoft.Json/RFC3339DateTimeOffsetConverter.cs +++ /dev/null @@ -1,33 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Globalization; -using Newtonsoft.Json; -using Newtonsoft.Json.Converters; - -namespace Newtonsoft.Json.Converters -{ - public class RFC3339DateTimeOffsetConverter : JsonConverter - { - private readonly JsonConverter _converter = new RFC3339NullableDateTimeOffsetConverter(); - - public override bool CanRead - { - get { return true; } - } - - public override bool CanWrite - { - get { return true; } - } - - public override DateTimeOffset ReadJson(JsonReader reader, Type objectType, DateTimeOffset existingValue, bool hasExistingValue, JsonSerializer serializer) - { - return _converter.ReadJson(reader, objectType, existingValue, hasExistingValue, serializer) ?? default; - } - - public override void WriteJson(JsonWriter writer, DateTimeOffset value, JsonSerializer serializer) - { - _converter.WriteJson(writer, value, serializer); - } - } -} diff --git a/src/SKIT.FlurlHttpClient.Wechat/Converters/Newtonsoft.Json/RFC3339NullableDateTimeOffsetConverter.cs b/src/SKIT.FlurlHttpClient.Wechat/Converters/Newtonsoft.Json/RFC3339NullableDateTimeOffsetConverter.cs deleted file mode 100644 index cc2e278d..00000000 --- a/src/SKIT.FlurlHttpClient.Wechat/Converters/Newtonsoft.Json/RFC3339NullableDateTimeOffsetConverter.cs +++ /dev/null @@ -1,58 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Globalization; -using Newtonsoft.Json; -using Newtonsoft.Json.Converters; - -namespace Newtonsoft.Json.Converters -{ - public class RFC3339NullableDateTimeOffsetConverter : JsonConverter - { - internal const string DATETIME_FORMAT = "yyyy-MM-dd'T'HH:mm:sszzz"; - - public override bool CanRead - { - get { return true; } - } - - public override bool CanWrite - { - get { return true; } - } - - public override DateTimeOffset? ReadJson(JsonReader reader, Type objectType, DateTimeOffset? existingValue, bool hasExistingValue, JsonSerializer serializer) - { - if (reader.TokenType == JsonToken.Null) - { - return existingValue; - } - else if (reader.TokenType == JsonToken.String) - { - string? value = serializer.Deserialize(reader); - if (value == null) - return existingValue; - - if (DateTimeOffset.TryParseExact(value, DATETIME_FORMAT, DateTimeFormatInfo.InvariantInfo, DateTimeStyles.None, out DateTimeOffset result)) - return result; - - if (DateTimeOffset.TryParse(value, out result)) - return result; - } - else if (reader.TokenType == JsonToken.Date) - { - reader.DateFormatString = DATETIME_FORMAT; - return serializer.Deserialize(reader); - } - - throw new JsonReaderException(); - } - - public override void WriteJson(JsonWriter writer, DateTimeOffset? value, JsonSerializer serializer) - { - if (value.HasValue) - writer.WriteValue(value.Value.ToString(DATETIME_FORMAT, DateTimeFormatInfo.InvariantInfo)); - else - writer.WriteNull(); - } - } -} diff --git a/src/SKIT.FlurlHttpClient.Wechat/Converters/Newtonsoft.Json/StringTypedInt32IListConverter.cs b/src/SKIT.FlurlHttpClient.Wechat/Converters/Newtonsoft.Json/StringTypedInt32IListConverter.cs deleted file mode 100644 index b269c7c7..00000000 --- a/src/SKIT.FlurlHttpClient.Wechat/Converters/Newtonsoft.Json/StringTypedInt32IListConverter.cs +++ /dev/null @@ -1,44 +0,0 @@ -using System; -using System.Collections.Generic; -using Newtonsoft.Json; -using Newtonsoft.Json.Converters; - -namespace Newtonsoft.Json.Converters -{ - public class StringTypedInt32IListConverter : JsonConverter?> - { - private readonly JsonConverter?> _converter = new StringTypedInt32ListConverter(); - - public override bool CanRead - { - get { return true; } - } - - public override bool CanWrite - { - get { return true; } - } - - public override IList? ReadJson(JsonReader reader, Type objectType, IList? existingValue, bool hasExistingValue, JsonSerializer serializer) - { - return _converter.ReadJson(reader, objectType, ConvertIListToList(existingValue), hasExistingValue, serializer); - } - - public override void WriteJson(JsonWriter writer, IList? value, JsonSerializer serializer) - { - _converter.WriteJson(writer, ConvertIListToList(value), serializer); - } - - private List? ConvertIListToList(IList? src) - { - if (src == null) - return null; - - List? dest = src as List; - if (dest != null) - return dest; - - return new List(src); - } - } -} diff --git a/src/SKIT.FlurlHttpClient.Wechat/Converters/Newtonsoft.Json/StringTypedInt32ListConverter.cs b/src/SKIT.FlurlHttpClient.Wechat/Converters/Newtonsoft.Json/StringTypedInt32ListConverter.cs deleted file mode 100644 index e7b670db..00000000 --- a/src/SKIT.FlurlHttpClient.Wechat/Converters/Newtonsoft.Json/StringTypedInt32ListConverter.cs +++ /dev/null @@ -1,54 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using Newtonsoft.Json; -using Newtonsoft.Json.Converters; - -namespace Newtonsoft.Json.Converters -{ - public class StringTypedInt32ListConverter : JsonConverter?> - { - public override bool CanRead - { - get { return true; } - } - - public override bool CanWrite - { - get { return true; } - } - - public override List? ReadJson(JsonReader reader, Type objectType, List? existingValue, bool hasExistingValue, JsonSerializer serializer) - { - if (reader.TokenType == JsonToken.Null) - { - return null; - } - else if (reader.TokenType == JsonToken.String) - { - string? value = serializer.Deserialize(reader); - if (value == null) - return existingValue; - - try - { - return value.Split(',').Select(e => int.Parse(e.Trim())).ToList(); - } - catch (Exception ex) - { - throw new JsonReaderException(ex.Message, ex); - } - } - - throw new JsonReaderException(); - } - - public override void WriteJson(JsonWriter writer, List? value, JsonSerializer serializer) - { - if (value != null) - writer.WriteValue(string.Join(",", value)); - else - writer.WriteNull(); - } - } -} diff --git a/src/SKIT.FlurlHttpClient.Wechat/Converters/Newtonsoft.Json/StringTypedStringIListConverter.cs b/src/SKIT.FlurlHttpClient.Wechat/Converters/Newtonsoft.Json/StringTypedStringIListConverter.cs deleted file mode 100644 index 6ce8cf4f..00000000 --- a/src/SKIT.FlurlHttpClient.Wechat/Converters/Newtonsoft.Json/StringTypedStringIListConverter.cs +++ /dev/null @@ -1,44 +0,0 @@ -using System; -using System.Collections.Generic; -using Newtonsoft.Json; -using Newtonsoft.Json.Converters; - -namespace Newtonsoft.Json.Converters -{ - public class StringTypedStringIListConverter : JsonConverter?> - { - private readonly JsonConverter?> _converter = new StringTypedStringListConverter(); - - public override bool CanRead - { - get { return true; } - } - - public override bool CanWrite - { - get { return true; } - } - - public override IList? ReadJson(JsonReader reader, Type objectType, IList? existingValue, bool hasExistingValue, JsonSerializer serializer) - { - return _converter.ReadJson(reader, objectType, ConvertIListToList(existingValue), hasExistingValue, serializer); - } - - public override void WriteJson(JsonWriter writer, IList? value, JsonSerializer serializer) - { - _converter.WriteJson(writer, ConvertIListToList(value), serializer); - } - - private List? ConvertIListToList(IList? src) - { - if (src == null) - return null; - - List? dest = src as List; - if (dest != null) - return dest; - - return new List(src); - } - } -} diff --git a/src/SKIT.FlurlHttpClient.Wechat/Converters/Newtonsoft.Json/StringTypedStringListConverter.cs b/src/SKIT.FlurlHttpClient.Wechat/Converters/Newtonsoft.Json/StringTypedStringListConverter.cs deleted file mode 100644 index 48d81e1c..00000000 --- a/src/SKIT.FlurlHttpClient.Wechat/Converters/Newtonsoft.Json/StringTypedStringListConverter.cs +++ /dev/null @@ -1,47 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using Newtonsoft.Json; -using Newtonsoft.Json.Converters; - -namespace Newtonsoft.Json.Converters -{ - public class StringTypedStringListConverter : JsonConverter?> - { - public override bool CanRead - { - get { return true; } - } - - public override bool CanWrite - { - get { return true; } - } - - public override List? ReadJson(JsonReader reader, Type objectType, List? existingValue, bool hasExistingValue, JsonSerializer serializer) - { - if (reader.TokenType == JsonToken.Null) - { - return null; - } - else if (reader.TokenType == JsonToken.String) - { - string? value = serializer.Deserialize(reader); - if (value == null) - return existingValue; - - return value.Split(',').ToList(); - } - - throw new JsonReaderException(); - } - - public override void WriteJson(JsonWriter writer, List? value, JsonSerializer serializer) - { - if (value != null) - writer.WriteValue(string.Join(",", value)); - else - writer.WriteNull(); - } - } -} diff --git a/src/SKIT.FlurlHttpClient.Wechat/Converters/System.Text.Json/CommonDateTimeOffsetConverter.cs b/src/SKIT.FlurlHttpClient.Wechat/Converters/System.Text.Json/CommonDateTimeOffsetConverter.cs deleted file mode 100644 index 926fb65f..00000000 --- a/src/SKIT.FlurlHttpClient.Wechat/Converters/System.Text.Json/CommonDateTimeOffsetConverter.cs +++ /dev/null @@ -1,22 +0,0 @@ -using System; -using System.Globalization; -using System.Text.Json; -using System.Text.Json.Serialization; - -namespace System.Text.Json.Converters -{ - public class CommonDateTimeOffsetConverter : JsonConverter - { - private readonly JsonConverter _converter = new CommonNullableDateTimeOffsetConverter(); - - public override DateTimeOffset Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) - { - return _converter.Read(ref reader, typeToConvert, options) ?? default; - } - - public override void Write(Utf8JsonWriter writer, DateTimeOffset value, JsonSerializerOptions options) - { - _converter.Write(writer, value, options); - } - } -} diff --git a/src/SKIT.FlurlHttpClient.Wechat/Converters/System.Text.Json/CommonNullableDateTimeOffsetConverter.cs b/src/SKIT.FlurlHttpClient.Wechat/Converters/System.Text.Json/CommonNullableDateTimeOffsetConverter.cs deleted file mode 100644 index a358abf3..00000000 --- a/src/SKIT.FlurlHttpClient.Wechat/Converters/System.Text.Json/CommonNullableDateTimeOffsetConverter.cs +++ /dev/null @@ -1,42 +0,0 @@ -using System; -using System.Globalization; -using System.Text.Json; -using System.Text.Json.Serialization; - -namespace System.Text.Json.Converters -{ - public class CommonNullableDateTimeOffsetConverter : JsonConverter - { - private const string DATETIME_FORMAT = Newtonsoft.Json.Converters.CommonNullableDateTimeOffsetConverter.DATETIME_FORMAT; - - public override DateTimeOffset? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) - { - if (reader.TokenType == JsonTokenType.Null) - { - return null; - } - else if (reader.TokenType == JsonTokenType.String) - { - string? value = reader.GetString(); - if (value == null) - return null; - - if (DateTimeOffset.TryParseExact(value, DATETIME_FORMAT, DateTimeFormatInfo.InvariantInfo, DateTimeStyles.None, out DateTimeOffset result)) - return result; - - if (DateTimeOffset.TryParse(value, out result)) - return result; - } - - throw new JsonException(); - } - - public override void Write(Utf8JsonWriter writer, DateTimeOffset? value, JsonSerializerOptions options) - { - if (value.HasValue) - writer.WriteStringValue(value.Value.ToString(DATETIME_FORMAT, DateTimeFormatInfo.InvariantInfo)); - else - writer.WriteNullValue(); - } - } -} diff --git a/src/SKIT.FlurlHttpClient.Wechat/Converters/System.Text.Json/JsonTypedStringArrayConverter.cs b/src/SKIT.FlurlHttpClient.Wechat/Converters/System.Text.Json/JsonTypedStringArrayConverter.cs deleted file mode 100644 index 4655a74b..00000000 --- a/src/SKIT.FlurlHttpClient.Wechat/Converters/System.Text.Json/JsonTypedStringArrayConverter.cs +++ /dev/null @@ -1,42 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text.Json; -using System.Text.Json.Serialization; - -namespace System.Text.Json.Converters -{ - public class JsonTypedStringArrayConverter : JsonConverter - { - public override string[]? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) - { - if (reader.TokenType == JsonTokenType.Null) - { - return null; - } - else if (reader.TokenType == JsonTokenType.String) - { - string? value = reader.GetString(); - if (value == null) - return null; - - if (value.StartsWith("[") && value.EndsWith("[")) - return JsonSerializer.Deserialize(value, options); - - if (string.IsNullOrEmpty(value)) - return new string[0]; - else - return new string[1] { value }; - } - - throw new JsonException(); - } - - public override void Write(Utf8JsonWriter writer, string[]? value, JsonSerializerOptions options) - { - if (value != null) - writer.WriteStringValue(JsonSerializer.Serialize(value, options)); - else - writer.WriteNullValue(); - } - } -} diff --git a/src/SKIT.FlurlHttpClient.Wechat/Converters/System.Text.Json/JsonTypedStringIListConverter.cs b/src/SKIT.FlurlHttpClient.Wechat/Converters/System.Text.Json/JsonTypedStringIListConverter.cs deleted file mode 100644 index 68633d7c..00000000 --- a/src/SKIT.FlurlHttpClient.Wechat/Converters/System.Text.Json/JsonTypedStringIListConverter.cs +++ /dev/null @@ -1,34 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text.Json; -using System.Text.Json.Serialization; - -namespace System.Text.Json.Converters -{ - public class JsonTypedStringIListConverter : JsonConverter?> - { - private readonly JsonConverter?> _converter = new JsonTypedStringListConverter(); - - public override IList? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) - { - return _converter.Read(ref reader, typeToConvert, options); - } - - public override void Write(Utf8JsonWriter writer, IList? value, JsonSerializerOptions options) - { - _converter.Write(writer, ConvertIListToList(value), options); - } - - private List? ConvertIListToList(IList? src) - { - if (src == null) - return null; - - List? dest = src as List; - if (dest != null) - return dest; - - return new List(src); - } - } -} diff --git a/src/SKIT.FlurlHttpClient.Wechat/Converters/System.Text.Json/JsonTypedStringListConverter.cs b/src/SKIT.FlurlHttpClient.Wechat/Converters/System.Text.Json/JsonTypedStringListConverter.cs deleted file mode 100644 index ef17f2a7..00000000 --- a/src/SKIT.FlurlHttpClient.Wechat/Converters/System.Text.Json/JsonTypedStringListConverter.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text.Json; -using System.Text.Json.Serialization; - -namespace System.Text.Json.Converters -{ - public class JsonTypedStringListConverter : JsonConverter?> - { - public override List? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) - { - if (reader.TokenType == JsonTokenType.Null) - { - return null; - } - else if (reader.TokenType == JsonTokenType.String) - { - string? value = reader.GetString(); - if (value == null) - return null; - - return JsonSerializer.Deserialize>(value, options); - } - - throw new JsonException(); - } - - public override void Write(Utf8JsonWriter writer, List? value, JsonSerializerOptions options) - { - if (value != null) - writer.WriteStringValue(JsonSerializer.Serialize(value, options)); - else - writer.WriteNullValue(); - } - } -} diff --git a/src/SKIT.FlurlHttpClient.Wechat/Converters/System.Text.Json/NumberTypedBooleanConverter.cs b/src/SKIT.FlurlHttpClient.Wechat/Converters/System.Text.Json/NumberTypedBooleanConverter.cs deleted file mode 100644 index e989abbf..00000000 --- a/src/SKIT.FlurlHttpClient.Wechat/Converters/System.Text.Json/NumberTypedBooleanConverter.cs +++ /dev/null @@ -1,22 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text.Json; -using System.Text.Json.Serialization; - -namespace System.Text.Json.Converters -{ - public class NumberTypedBooleanConverter : JsonConverter - { - private readonly JsonConverter _converter = new NumberTypedNullableBooleanConverter(); - - public override bool Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) - { - return _converter.Read(ref reader, typeToConvert, options) ?? default; - } - - public override void Write(Utf8JsonWriter writer, bool value, JsonSerializerOptions options) - { - _converter.Write(writer, value, options); - } - } -} diff --git a/src/SKIT.FlurlHttpClient.Wechat/Converters/System.Text.Json/NumberTypedNullableBooleanConverter.cs b/src/SKIT.FlurlHttpClient.Wechat/Converters/System.Text.Json/NumberTypedNullableBooleanConverter.cs deleted file mode 100644 index 57e850dd..00000000 --- a/src/SKIT.FlurlHttpClient.Wechat/Converters/System.Text.Json/NumberTypedNullableBooleanConverter.cs +++ /dev/null @@ -1,50 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text.Json; -using System.Text.Json.Serialization; - -namespace System.Text.Json.Converters -{ - public class NumberTypedNullableBooleanConverter : JsonConverter - { - public override bool? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) - { - if (reader.TokenType == JsonTokenType.Null) - { - return null; - } - else if (reader.TokenType == JsonTokenType.True) - { - return true; - } - else if (reader.TokenType == JsonTokenType.False) - { - return false; - } - else if (reader.TokenType == JsonTokenType.Number) - { - if (reader.TryGetInt32(out int value)) - return Convert.ToBoolean(value); - } - else if (reader.TokenType == JsonTokenType.String) - { - string? str = reader.GetString(); - if (str == null) - return null; - - if (int.TryParse(str, out int value)) - return Convert.ToBoolean(value); - } - - throw new JsonException(); - } - - public override void Write(Utf8JsonWriter writer, bool? value, JsonSerializerOptions options) - { - if (value.HasValue) - writer.WriteNumberValue(value.Value ? 1 : 0); - else - writer.WriteNullValue(); - } - } -} diff --git a/src/SKIT.FlurlHttpClient.Wechat/Converters/System.Text.Json/NumberTypedStringConverter.cs b/src/SKIT.FlurlHttpClient.Wechat/Converters/System.Text.Json/NumberTypedStringConverter.cs deleted file mode 100644 index f1e33ae6..00000000 --- a/src/SKIT.FlurlHttpClient.Wechat/Converters/System.Text.Json/NumberTypedStringConverter.cs +++ /dev/null @@ -1,54 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text.Json; -using System.Text.Json.Serialization; - -namespace System.Text.Json.Converters -{ - public class NumberTypedStringConverter : JsonConverter - { - public override string? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) - { - if (reader.TokenType == JsonTokenType.Null) - { - return null; - } - else if (reader.TokenType == JsonTokenType.Number) - { - if (reader.TryGetInt64(out long valueAsInt64)) - return valueAsInt64.ToString(); - else if (reader.TryGetUInt64(out ulong valueAsUInt64)) - return valueAsUInt64.ToString(); - else if (reader.TryGetDouble(out double valueAsDouble)) - return valueAsDouble.ToString(); - else - return reader.GetDecimal().ToString(); - } - else if (reader.TokenType == JsonTokenType.String) - { - return reader.GetString(); - } - - throw new JsonException(); - } - - public override void Write(Utf8JsonWriter writer, string? value, JsonSerializerOptions options) - { - if (value != null) - { - if (long.TryParse(value, out long valueAsInt64)) - writer.WriteNumberValue(valueAsInt64); - else if (ulong.TryParse(value, out ulong valueAsUInt64)) - writer.WriteNumberValue(valueAsUInt64); - else if (double.TryParse(value, out double valueAsDouble)) - writer.WriteNumberValue(valueAsDouble); - else - writer.WriteStringValue(value); - } - else - { - writer.WriteNullValue(); - } - } - } -} diff --git a/src/SKIT.FlurlHttpClient.Wechat/Converters/System.Text.Json/RFC3339DateTimeOffsetConverter.cs b/src/SKIT.FlurlHttpClient.Wechat/Converters/System.Text.Json/RFC3339DateTimeOffsetConverter.cs deleted file mode 100644 index 1f941571..00000000 --- a/src/SKIT.FlurlHttpClient.Wechat/Converters/System.Text.Json/RFC3339DateTimeOffsetConverter.cs +++ /dev/null @@ -1,23 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Globalization; -using System.Text.Json; -using System.Text.Json.Serialization; - -namespace System.Text.Json.Converters -{ - public class RFC3339DateTimeOffsetConverter : JsonConverter - { - private readonly JsonConverter _converter = new RFC3339NullableDateTimeOffsetConverter(); - - public override DateTimeOffset Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) - { - return _converter.Read(ref reader, typeToConvert, options) ?? default; - } - - public override void Write(Utf8JsonWriter writer, DateTimeOffset value, JsonSerializerOptions options) - { - _converter.Write(writer, value, options); - } - } -} diff --git a/src/SKIT.FlurlHttpClient.Wechat/Converters/System.Text.Json/RFC3339NullableDateTimeOffsetConverter.cs b/src/SKIT.FlurlHttpClient.Wechat/Converters/System.Text.Json/RFC3339NullableDateTimeOffsetConverter.cs deleted file mode 100644 index 41c56e69..00000000 --- a/src/SKIT.FlurlHttpClient.Wechat/Converters/System.Text.Json/RFC3339NullableDateTimeOffsetConverter.cs +++ /dev/null @@ -1,43 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Globalization; -using System.Text.Json; -using System.Text.Json.Serialization; - -namespace System.Text.Json.Converters -{ - public class RFC3339NullableDateTimeOffsetConverter : JsonConverter - { - internal const string DATETIME_FORMAT = Newtonsoft.Json.Converters.RFC3339NullableDateTimeOffsetConverter.DATETIME_FORMAT; - - public override DateTimeOffset? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) - { - if (reader.TokenType == JsonTokenType.Null) - { - return null; - } - else if (reader.TokenType == JsonTokenType.String) - { - string? value = reader.GetString(); - if (value == null) - return null; - - if (DateTimeOffset.TryParseExact(value, DATETIME_FORMAT, DateTimeFormatInfo.InvariantInfo, DateTimeStyles.None, out DateTimeOffset result)) - return result; - - if (DateTimeOffset.TryParse(value, out result)) - return result; - } - - throw new JsonException(); - } - - public override void Write(Utf8JsonWriter writer, DateTimeOffset? value, JsonSerializerOptions options) - { - if (value.HasValue) - writer.WriteStringValue(value.Value.ToString(DATETIME_FORMAT, DateTimeFormatInfo.InvariantInfo)); - else - writer.WriteNullValue(); - } - } -} diff --git a/src/SKIT.FlurlHttpClient.Wechat/Converters/System.Text.Json/StringTypedBooleanConverter.cs b/src/SKIT.FlurlHttpClient.Wechat/Converters/System.Text.Json/StringTypedBooleanConverter.cs deleted file mode 100644 index 6b7b5492..00000000 --- a/src/SKIT.FlurlHttpClient.Wechat/Converters/System.Text.Json/StringTypedBooleanConverter.cs +++ /dev/null @@ -1,22 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text.Json; -using System.Text.Json.Serialization; - -namespace System.Text.Json.Converters -{ - public class StringTypedBooleanConverter : JsonConverter - { - private readonly JsonConverter _converter = new StringTypedNullableBooleanConverter(); - - public override bool Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) - { - return _converter.Read(ref reader, typeToConvert, options) ?? default; - } - - public override void Write(Utf8JsonWriter writer, bool value, JsonSerializerOptions options) - { - _converter.Write(writer, value, options); - } - } -} diff --git a/src/SKIT.FlurlHttpClient.Wechat/Converters/System.Text.Json/StringTypedInt32IListConverter.cs b/src/SKIT.FlurlHttpClient.Wechat/Converters/System.Text.Json/StringTypedInt32IListConverter.cs deleted file mode 100644 index 4931aec8..00000000 --- a/src/SKIT.FlurlHttpClient.Wechat/Converters/System.Text.Json/StringTypedInt32IListConverter.cs +++ /dev/null @@ -1,34 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text.Json; -using System.Text.Json.Serialization; - -namespace System.Text.Json.Converters -{ - public class StringTypedInt32IListConverter : JsonConverter?> - { - private readonly JsonConverter?> _converter = new StringTypedInt32ListConverter(); - - public override IList? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) - { - return _converter.Read(ref reader, typeToConvert, options); - } - - public override void Write(Utf8JsonWriter writer, IList? value, JsonSerializerOptions options) - { - _converter.Write(writer, ConvertIListToList(value), options); - } - - private List? ConvertIListToList(IList? src) - { - if (src == null) - return null; - - List? dest = src as List; - if (dest != null) - return dest; - - return new List(src); - } - } -} diff --git a/src/SKIT.FlurlHttpClient.Wechat/Converters/System.Text.Json/StringTypedInt32ListConverter.cs b/src/SKIT.FlurlHttpClient.Wechat/Converters/System.Text.Json/StringTypedInt32ListConverter.cs deleted file mode 100644 index fb47149d..00000000 --- a/src/SKIT.FlurlHttpClient.Wechat/Converters/System.Text.Json/StringTypedInt32ListConverter.cs +++ /dev/null @@ -1,44 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text.Json; -using System.Text.Json.Serialization; - -namespace System.Text.Json.Converters -{ - public class StringTypedInt32ListConverter : JsonConverter?> - { - public override List? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) - { - if (reader.TokenType == JsonTokenType.Null) - { - return null; - } - else if (reader.TokenType == JsonTokenType.String) - { - string? value = reader.GetString(); - if (value == null) - return null; - - try - { - return value.Split(',').Select(e => int.Parse(e.Trim())).ToList(); - } - catch (Exception ex) - { - throw new JsonException(ex.Message, ex); - } - } - - throw new JsonException(); - } - - public override void Write(Utf8JsonWriter writer, List? value, JsonSerializerOptions options) - { - if (value != null) - writer.WriteStringValue(string.Join(",", value)); - else - writer.WriteNullValue(); - } - } -} diff --git a/src/SKIT.FlurlHttpClient.Wechat/Converters/System.Text.Json/StringTypedNullableBooleanConverter.cs b/src/SKIT.FlurlHttpClient.Wechat/Converters/System.Text.Json/StringTypedNullableBooleanConverter.cs deleted file mode 100644 index 28732444..00000000 --- a/src/SKIT.FlurlHttpClient.Wechat/Converters/System.Text.Json/StringTypedNullableBooleanConverter.cs +++ /dev/null @@ -1,47 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text.Json; -using System.Text.Json.Serialization; - -namespace System.Text.Json.Converters -{ - public class StringTypedNullableBooleanConverter : JsonConverter - { - public override bool? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) - { - if (reader.TokenType == JsonTokenType.Null) - { - return null; - } - else if (reader.TokenType == JsonTokenType.True) - { - return true; - } - else if (reader.TokenType == JsonTokenType.False) - { - return false; - } - else if (reader.TokenType == JsonTokenType.String) - { - string? value = reader.GetString(); - if (value == null) - return null; - - if ("true".Equals(value, StringComparison.InvariantCultureIgnoreCase)) - return true; - else if ("false".Equals(value, StringComparison.InvariantCultureIgnoreCase)) - return false; - } - - throw new JsonException(); - } - - public override void Write(Utf8JsonWriter writer, bool? value, JsonSerializerOptions options) - { - if (value.HasValue) - writer.WriteStringValue(value.Value ? "true" : "false"); - else - writer.WriteNullValue(); - } - } -} diff --git a/src/SKIT.FlurlHttpClient.Wechat/Converters/System.Text.Json/StringTypedStringIListConverter.cs b/src/SKIT.FlurlHttpClient.Wechat/Converters/System.Text.Json/StringTypedStringIListConverter.cs deleted file mode 100644 index d8fd7ca8..00000000 --- a/src/SKIT.FlurlHttpClient.Wechat/Converters/System.Text.Json/StringTypedStringIListConverter.cs +++ /dev/null @@ -1,34 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text.Json; -using System.Text.Json.Serialization; - -namespace System.Text.Json.Converters -{ - public class StringTypedStringIListConverter : JsonConverter?> - { - private readonly JsonConverter?> _converter = new StringTypedStringListConverter(); - - public override IList? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) - { - return _converter.Read(ref reader, typeToConvert, options); - } - - public override void Write(Utf8JsonWriter writer, IList? value, JsonSerializerOptions options) - { - _converter.Write(writer, ConvertIListToList(value), options); - } - - private List? ConvertIListToList(IList? src) - { - if (src == null) - return null; - - List? dest = src as List; - if (dest != null) - return dest; - - return new List(src); - } - } -} diff --git a/src/SKIT.FlurlHttpClient.Wechat/Converters/System.Text.Json/StringTypedStringListConverter.cs b/src/SKIT.FlurlHttpClient.Wechat/Converters/System.Text.Json/StringTypedStringListConverter.cs deleted file mode 100644 index ac928531..00000000 --- a/src/SKIT.FlurlHttpClient.Wechat/Converters/System.Text.Json/StringTypedStringListConverter.cs +++ /dev/null @@ -1,37 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text.Json; -using System.Text.Json.Serialization; - -namespace System.Text.Json.Converters -{ - public class StringTypedStringListConverter : JsonConverter?> - { - public override List? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) - { - if (reader.TokenType == JsonTokenType.Null) - { - return null; - } - else if (reader.TokenType == JsonTokenType.String) - { - string? value = reader.GetString(); - if (value == null) - return null; - - return value.Split(',').ToList(); - } - - throw new JsonException(); - } - - public override void Write(Utf8JsonWriter writer, List? value, JsonSerializerOptions options) - { - if (value != null) - writer.WriteStringValue(string.Join(",", value)); - else - writer.WriteNullValue(); - } - } -} diff --git a/src/SKIT.FlurlHttpClient.Wechat/Extensions/FlurlHttpRequestVerbExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat/Extensions/FlurlHttpRequestVerbExtensions.cs deleted file mode 100644 index 5df0c754..00000000 --- a/src/SKIT.FlurlHttpClient.Wechat/Extensions/FlurlHttpRequestVerbExtensions.cs +++ /dev/null @@ -1,43 +0,0 @@ -using System; -using System.Net.Http; -using Flurl; -using Flurl.Http; - -namespace SKIT.FlurlHttpClient.Wechat -{ - public static class FlurlHttpRequestVerbExtensions - { - public static IFlurlRequest WithVerb(this string url, string method) - { - return WithVerb(url, new HttpMethod(method)); - } - - public static IFlurlRequest WithVerb(this string url, HttpMethod method) - { - return WithVerb(Url.Parse(url), method); - } - - public static IFlurlRequest WithVerb(this Url url, string method) - { - return WithVerb(url, new HttpMethod(method)); - } - - public static IFlurlRequest WithVerb(this Url url, HttpMethod method) - { - return WithVerb(new FlurlRequest(url), method); - } - - public static IFlurlRequest WithVerb(this IFlurlRequest request, string method) - { - return WithVerb(request, new HttpMethod(method)); - } - - public static IFlurlRequest WithVerb(this IFlurlRequest request, HttpMethod method) - { - if (request == null) throw new ArgumentNullException(nameof(request)); - - request.Verb = method; - return request; - } - } -} diff --git a/src/SKIT.FlurlHttpClient.Wechat/IWechatClient.cs b/src/SKIT.FlurlHttpClient.Wechat/IWechatClient.cs index 50607bc8..379b4540 100644 --- a/src/SKIT.FlurlHttpClient.Wechat/IWechatClient.cs +++ b/src/SKIT.FlurlHttpClient.Wechat/IWechatClient.cs @@ -8,22 +8,7 @@ namespace SKIT.FlurlHttpClient.Wechat /// /// SKIT.FlurlHttpClient.Wechat 客户端接口。 /// - public interface IWechatClient : IDisposable + public interface IWechatClient : ICommonClient { - /// - /// 获取当前客户端的拦截器集合。 - /// - public WechatHttpCallInterceptorCollection Interceptors { get; } - - /// - /// 获取当前客户端使用的 JSON 序列化器。 - /// - public ISerializer JsonSerializer { get; } - - /// - /// 配置客户端。 - /// - /// - public void Configure(Action configure); } } diff --git a/src/SKIT.FlurlHttpClient.Wechat/IWechatRequest.cs b/src/SKIT.FlurlHttpClient.Wechat/IWechatRequest.cs index e4737cce..f983df0a 100644 --- a/src/SKIT.FlurlHttpClient.Wechat/IWechatRequest.cs +++ b/src/SKIT.FlurlHttpClient.Wechat/IWechatRequest.cs @@ -5,13 +5,7 @@ namespace SKIT.FlurlHttpClient.Wechat /// /// SKIT.FlurlHttpClient.Wechat 请求接口。 /// - public interface IWechatRequest + public interface IWechatRequest : ICommonRequest { - /// - /// 获取或设置请求超时时间(单位:毫秒)。 - /// - [Newtonsoft.Json.JsonIgnore] - [System.Text.Json.Serialization.JsonIgnore] - public int? Timeout { get; set; } } } diff --git a/src/SKIT.FlurlHttpClient.Wechat/IWechatResponse.cs b/src/SKIT.FlurlHttpClient.Wechat/IWechatResponse.cs index a41a5735..97f3b97b 100644 --- a/src/SKIT.FlurlHttpClient.Wechat/IWechatResponse.cs +++ b/src/SKIT.FlurlHttpClient.Wechat/IWechatResponse.cs @@ -6,33 +6,11 @@ namespace SKIT.FlurlHttpClient.Wechat /// /// SKIT.FlurlHttpClient.Wechat 响应接口。 /// - public interface IWechatResponse + public interface IWechatResponse : ICommonResponse { /// - /// 获取原始的 HTTP 响应状态码。 + /// 获取微信 API 返回的错误描述。 /// - [Newtonsoft.Json.JsonIgnore] - [System.Text.Json.Serialization.JsonIgnore] - public int RawStatus { get; } - - /// - /// 获取原始的 HTTP 响应表头集合。 - /// - [Newtonsoft.Json.JsonIgnore] - [System.Text.Json.Serialization.JsonIgnore] - public IDictionary RawHeaders { get; } - - /// - /// 获取原始的 HTTP 响应正文。 - /// - [Newtonsoft.Json.JsonIgnore] - [System.Text.Json.Serialization.JsonIgnore] - public byte[] RawBytes { get; } - - /// - /// 获取一个值,该值指示调用 API 是否成功。 - /// - /// - bool IsSuccessful(); + string? ErrorMessage { get; set; } } } diff --git a/src/SKIT.FlurlHttpClient.Wechat/SKIT.FlurlHttpClient.Wechat.csproj b/src/SKIT.FlurlHttpClient.Wechat/SKIT.FlurlHttpClient.Wechat.csproj index 1b3a5a1b..b5b8754d 100644 --- a/src/SKIT.FlurlHttpClient.Wechat/SKIT.FlurlHttpClient.Wechat.csproj +++ b/src/SKIT.FlurlHttpClient.Wechat/SKIT.FlurlHttpClient.Wechat.csproj @@ -13,7 +13,7 @@ https://github.com/fudiwei/DotNetCore.SKIT.FlurlHttpClient.Wechat Flurl.Http Wechat Weixin MicroMessage 微信 1.0.3 - The core of a Flurl.Http client for Wechat. SKIT.FlurlClient.Wechat(含 SKIT.FlurlHttpClient.Wechat.Api、SKIT.FlurlHttpClient.Wechat.TenpayV3、SKIT.FlurlHttpClient.Wechat.Work、SKIT.FlurlHttpClient.Wechat.Ads 等模块)的核心库,具体用法请参阅开发文档。 + SKIT.FlurlClient.Wechat(含 SKIT.FlurlHttpClient.Wechat.Api、SKIT.FlurlHttpClient.Wechat.TenpayV3、SKIT.FlurlHttpClient.Wechat.Work、SKIT.FlurlHttpClient.Wechat.Ads 等模块)的核心库,具体用法请参阅开发文档。 Fu Diwei git https://github.com/fudiwei/DotNetCore.SKIT.FlurlHttpClient.Wechat.git @@ -23,11 +23,9 @@ - - - - + + diff --git a/src/SKIT.FlurlHttpClient.Wechat/Serialization/FlurlNewtonsoftJsonSerializer.cs b/src/SKIT.FlurlHttpClient.Wechat/Serialization/FlurlNewtonsoftJsonSerializer.cs deleted file mode 100644 index 382663f5..00000000 --- a/src/SKIT.FlurlHttpClient.Wechat/Serialization/FlurlNewtonsoftJsonSerializer.cs +++ /dev/null @@ -1,75 +0,0 @@ -using System; -using System.IO; -using Flurl.Http.Configuration; -using Newtonsoft.Json; -using Newtonsoft.Json.Serialization; - -namespace SKIT.FlurlHttpClient.Wechat -{ - public class FlurlNewtonsoftJsonSerializer : ISerializer - { - private readonly JsonSerializerSettings _settings; - - public FlurlNewtonsoftJsonSerializer() - : this(GetDefaultSerializerSettings()) - { - } - - public FlurlNewtonsoftJsonSerializer(JsonSerializerSettings settings) - { - if (settings == null) throw new ArgumentNullException(nameof(settings)); - - _settings = settings; - } - - public static JsonSerializerSettings GetDefaultSerializerSettings() - { - var jsonSettings = new JsonSerializerSettings(); - jsonSettings.ReferenceLoopHandling = ReferenceLoopHandling.Serialize; - jsonSettings.PreserveReferencesHandling = PreserveReferencesHandling.None; - jsonSettings.NullValueHandling = NullValueHandling.Ignore; - jsonSettings.Formatting = Formatting.None; - jsonSettings.ContractResolver = new DefaultContractResolver(); - return jsonSettings; - } - - public T Deserialize(string json) - { - return JsonConvert.DeserializeObject(json, _settings); - } - - T ISerializer.Deserialize(Stream stream) - { - if (stream.CanSeek) - { - stream.Seek(0, SeekOrigin.Begin); - } - - using (var reader = new StreamReader(stream)) - { - string json = reader.ReadToEnd(); - return Deserialize(json); - } - } - - public object Deserialize(string json, Type type) - { - return JsonConvert.DeserializeObject(json, type, _settings)!; - } - - public string Serialize(T obj) - { - return JsonConvert.SerializeObject(obj, _settings); - } - - public string Serialize(object obj) - { - return JsonConvert.SerializeObject(obj, _settings); - } - - public string Serialize(object obj, Type type) - { - return JsonConvert.SerializeObject(obj, type, _settings); - } - } -} diff --git a/src/SKIT.FlurlHttpClient.Wechat/Serialization/FlurlSystemTextJsonSerializer.cs b/src/SKIT.FlurlHttpClient.Wechat/Serialization/FlurlSystemTextJsonSerializer.cs deleted file mode 100644 index abaf0de8..00000000 --- a/src/SKIT.FlurlHttpClient.Wechat/Serialization/FlurlSystemTextJsonSerializer.cs +++ /dev/null @@ -1,77 +0,0 @@ -using System; -using System.IO; -using System.Text.Encodings.Web; -using System.Text.Json; -using System.Text.Json.Serialization; -using Flurl.Http.Configuration; - -namespace SKIT.FlurlHttpClient.Wechat -{ - public class FlurlSystemTextJsonSerializer : ISerializer - { - private readonly JsonSerializerOptions _options; - - public FlurlSystemTextJsonSerializer() - : this(GetDefaultSerializerOptions()) - { - } - - public FlurlSystemTextJsonSerializer(JsonSerializerOptions options) - { - if (options == null) throw new ArgumentNullException(nameof(options)); - - _options = options; - } - - public static JsonSerializerOptions GetDefaultSerializerOptions() - { - var jsonOptions = new JsonSerializerOptions(); - jsonOptions.Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping; - jsonOptions.NumberHandling = JsonNumberHandling.AllowReadingFromString; - jsonOptions.IgnoreNullValues = true; - jsonOptions.WriteIndented = false; - jsonOptions.PropertyNamingPolicy = null; - jsonOptions.PropertyNameCaseInsensitive = true; - return jsonOptions; - } - - public T Deserialize(string json) - { - return JsonSerializer.Deserialize(json, _options)!; - } - - T ISerializer.Deserialize(Stream stream) - { - if (stream.CanSeek) - { - stream.Seek(0, SeekOrigin.Begin); - } - - using (var reader = new StreamReader(stream)) - { - string json = reader.ReadToEnd(); - return Deserialize(json); - } - } - - public object Deserialize(string json, Type type) - { - return JsonSerializer.Deserialize(json, type, _options)!; - } - - public string Serialize(T obj) - { - return JsonSerializer.Serialize(obj, _options); - } - - public string Serialize(object obj) - { - return JsonSerializer.Serialize(obj, _options); - } - - public string Serialize(object obj, Type type) - { - return JsonSerializer.Serialize(obj, type, _options); - } - } -} diff --git a/src/SKIT.FlurlHttpClient.Wechat/WechatClientBase.cs b/src/SKIT.FlurlHttpClient.Wechat/WechatClientBase.cs deleted file mode 100644 index 4c598820..00000000 --- a/src/SKIT.FlurlHttpClient.Wechat/WechatClientBase.cs +++ /dev/null @@ -1,142 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Net.Http; -using System.Threading; -using System.Threading.Tasks; -using Flurl; -using Flurl.Http; -using Flurl.Http.Configuration; - -namespace SKIT.FlurlHttpClient.Wechat -{ - /// - /// SKIT.FlurlHttpClient.Wechat 客户端基类。 - /// - public abstract class WechatClientBase : IWechatClient - { - /// - /// - /// - public WechatHttpCallInterceptorCollection Interceptors { get; } - - /// - /// - /// - public ISerializer JsonSerializer - { - get { return FlurlClient.Settings?.JsonSerializer ?? FlurlHttp.GlobalSettings.JsonSerializer; } - } - - /// - /// 获取当前客户端使用的 对象。 - /// - protected IFlurlClient FlurlClient { get; } - - /// - /// - /// - protected WechatClientBase() - { - Interceptors = new WechatHttpCallInterceptorCollection(); - FlurlClient = new FlurlClient(); - FlurlClient.Configure(flurlSettings => - { - flurlSettings.JsonSerializer = new FlurlSystemTextJsonSerializer(); - flurlSettings.BeforeCallAsync = async (flurlCall) => - { - for (int i = 0, len = Interceptors.Count; i < len; i++) - { - await Interceptors[i].BeforeCallAsync(flurlCall); - } - }; - flurlSettings.AfterCallAsync = async (flurlCall) => - { - for (int i = Interceptors.Count - 1; i >= 0; i--) - { - await Interceptors[i].AfterCallAsync(flurlCall); - } - }; - }); - } - - /// - public void Configure(Action configure) - { - if (configure == null) throw new ArgumentNullException(nameof(configure)); - - FlurlClient.Configure(flurlSettings => - { - var settings = new WechatClientSettings(); - settings.Timeout = flurlSettings.Timeout; - settings.ConnectionLeaseTimeout = flurlSettings.ConnectionLeaseTimeout; - settings.JsonSerializer = flurlSettings.JsonSerializer; - settings.UrlEncodedSerializer = flurlSettings.UrlEncodedSerializer; - settings.FlurlHttpClientFactory = flurlSettings.HttpClientFactory; - configure.Invoke(settings); - - flurlSettings.Timeout = settings.Timeout; - flurlSettings.ConnectionLeaseTimeout = settings.ConnectionLeaseTimeout; - flurlSettings.JsonSerializer = settings.JsonSerializer; - flurlSettings.UrlEncodedSerializer = settings.UrlEncodedSerializer; - flurlSettings.HttpClientFactory = settings.FlurlHttpClientFactory; - }); - } - - /// - /// 异步发起请求。 - /// - /// - /// - /// - /// - protected virtual async Task SendRequestAsync(IFlurlRequest flurlRequest, HttpContent? httpContent = null, CancellationToken cancellationToken = default) - { - if (flurlRequest == null) throw new ArgumentNullException(nameof(flurlRequest)); - - var response = await flurlRequest - .WithClient(FlurlClient) - .AllowAnyHttpStatus() - .SendAsync(flurlRequest.Verb, httpContent, cancellationToken) - .ConfigureAwait(false); - return response; - } - - /// - /// 异步发起请求。 - /// - /// - /// - /// - /// - protected virtual async Task SendRequestWithJsonAsync(IFlurlRequest flurlRequest, object? data = null, CancellationToken cancellationToken = default) - { - if (flurlRequest == null) throw new ArgumentNullException(nameof(flurlRequest)); - - if (flurlRequest.Verb == HttpMethod.Get) - { - return await flurlRequest - .WithClient(FlurlClient) - .AllowAnyHttpStatus() - .SendAsync(flurlRequest.Verb, cancellationToken: cancellationToken) - .ConfigureAwait(false); - } - else - { - return await flurlRequest - .WithClient(FlurlClient) - .AllowAnyHttpStatus() - .SendJsonAsync(flurlRequest.Verb, data: data, cancellationToken: cancellationToken) - .ConfigureAwait(false); - } - } - - /// - /// - /// - public virtual void Dispose() - { - FlurlClient?.Dispose(); - } - } -} diff --git a/src/SKIT.FlurlHttpClient.Wechat/WechatClientSettings.cs b/src/SKIT.FlurlHttpClient.Wechat/WechatClientSettings.cs deleted file mode 100644 index 5a668b39..00000000 --- a/src/SKIT.FlurlHttpClient.Wechat/WechatClientSettings.cs +++ /dev/null @@ -1,43 +0,0 @@ -using System; -using Flurl.Http.Configuration; - -namespace SKIT.FlurlHttpClient.Wechat -{ - /// - /// SKIT.FlurlHttpClient.Wechat 客户端配置项。 - /// - public sealed class WechatClientSettings - { - /// - /// - /// - public TimeSpan? Timeout { get; set; } - - /// - /// - /// - public TimeSpan? ConnectionLeaseTimeout { get; set; } - - /// - /// - /// - public ISerializer JsonSerializer { get; set; } = default!; - - /// - /// - /// - public ISerializer UrlEncodedSerializer { get; set; } = default!; - - /// - /// - /// - public IHttpClientFactory FlurlHttpClientFactory { get; set; } = default!; - - /// - /// - /// - internal WechatClientSettings() - { - } - } -} diff --git a/src/SKIT.FlurlHttpClient.Wechat/WechatExceptionBase.cs b/src/SKIT.FlurlHttpClient.Wechat/WechatExceptionBase.cs deleted file mode 100644 index 6b7e3912..00000000 --- a/src/SKIT.FlurlHttpClient.Wechat/WechatExceptionBase.cs +++ /dev/null @@ -1,27 +0,0 @@ -using System; - -namespace SKIT.FlurlHttpClient.Wechat -{ - /// - /// SKIT.FlurlHttpClient.Wechat 引发的异常基类。 - /// - public abstract class WechatExceptionBase : Exception - { - /// - public WechatExceptionBase() - { - } - - /// - public WechatExceptionBase(string message) - : base(message) - { - } - - /// - public WechatExceptionBase(string message, Exception innerException) - : base(message, innerException) - { - } - } -} diff --git a/src/SKIT.FlurlHttpClient.Wechat/WechatHttpCallInterceptor.cs b/src/SKIT.FlurlHttpClient.Wechat/WechatHttpCallInterceptor.cs deleted file mode 100644 index ea4d8413..00000000 --- a/src/SKIT.FlurlHttpClient.Wechat/WechatHttpCallInterceptor.cs +++ /dev/null @@ -1,24 +0,0 @@ -using System; -using System.Collections; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading; -using System.Threading.Tasks; -using Flurl.Http; - -namespace SKIT.FlurlHttpClient.Wechat -{ - public abstract class WechatHttpCallInterceptor - { - public virtual Task BeforeCallAsync(FlurlCall flurlCall) - { - return Task.CompletedTask; - } - - public virtual Task AfterCallAsync(FlurlCall flurlCall) - { - return Task.CompletedTask; - } - } -} diff --git a/src/SKIT.FlurlHttpClient.Wechat/WechatHttpCallInterceptorCollection.cs b/src/SKIT.FlurlHttpClient.Wechat/WechatHttpCallInterceptorCollection.cs deleted file mode 100644 index b6ebbd04..00000000 --- a/src/SKIT.FlurlHttpClient.Wechat/WechatHttpCallInterceptorCollection.cs +++ /dev/null @@ -1,49 +0,0 @@ -using System; -using System.Collections; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace SKIT.FlurlHttpClient.Wechat -{ - public sealed class WechatHttpCallInterceptorCollection : IEnumerable - { - private readonly IList _list; - - public int Count - { - get { return _list.Count; } - } - - public WechatHttpCallInterceptor this[int index] - { - get { return _list[index]; } - } - - public WechatHttpCallInterceptorCollection() - { - _list = new List(); - } - - public void Add(WechatHttpCallInterceptor interceptor) - { - _list.Add(interceptor); - } - - public void Remove(WechatHttpCallInterceptor interceptor) - { - _list.Remove(interceptor); - } - - public IEnumerator GetEnumerator() - { - return _list.GetEnumerator(); - } - - IEnumerator IEnumerable.GetEnumerator() - { - return ((IEnumerable)_list).GetEnumerator(); - } - } -}