Skip to content

Commit ba0cb72

Browse files
authored
Merge pull request #76 from Martijnvos/feat/add-polymorphic-type-discriminators
Add polymorphic type discriminators
2 parents afe22f1 + 65428d0 commit ba0cb72

File tree

5 files changed

+62
-12
lines changed

5 files changed

+62
-12
lines changed

CHANGELOG.md

+7
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,13 @@ All notable changes to this project will be documented in this file.
44
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
55
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
66

7+
## [2.10.0] - 2024-12-30
8+
### Added
9+
- Polymorphic type discriminators on IRichMessage for deserialization
10+
11+
### Changed
12+
- Updated `System.Text.Json` to 8.0.5 fixing a [high impact security vulnerability](https://github.com/advisories/GHSA-hh2w-p6rv-4g7w)
13+
714
## [2.9.0] - 2024-06-20
815
### Changed
916
- New global messaging endpoint

CM.Text.Tests/DeserializationTests.cs

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
using System.Text.Json;
2+
using CM.Text.BusinessMessaging.Model.MultiChannel;
3+
using FluentAssertions;
4+
5+
namespace CM.Text.Tests
6+
{
7+
[TestClass]
8+
public class DeserializationTests
9+
{
10+
[TestMethod]
11+
public void DeserializeTextTest()
12+
{
13+
var textMessage = "{\"$type\":\"TextMessage\",\"text\":\"testing correct deserialization\",\"tag\":null,\"suggestions\":null}";
14+
var deserialized = JsonSerializer.Deserialize<IRichMessage>(textMessage);
15+
16+
deserialized.Should().BeOfType<TextMessage>();
17+
var deserializedTextMessage = deserialized as TextMessage;
18+
deserializedTextMessage!.Text.Should().Be("testing correct deserialization");
19+
}
20+
}
21+
}
22+
23+

CM.Text.Tests/SerializationTests.cs

+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
using System.Text.Json;
2+
using CM.Text.BusinessMessaging.Model.MultiChannel;
3+
using FluentAssertions;
4+
5+
namespace CM.Text.Tests
6+
{
7+
[TestClass]
8+
public class SerializationTests
9+
{
10+
[TestMethod]
11+
public void SerializeTextTest()
12+
{
13+
var textMessage = new TextMessage("testing correct serialization");
14+
var serialized= JsonSerializer.Serialize<IRichMessage>(textMessage);
15+
16+
serialized.Should().NotBeNullOrWhiteSpace();
17+
serialized.Should().Contain("\"$type\":\"TextMessage\"");
18+
}
19+
}
20+
}

CM.Text/BusinessMessaging/Model/MultiChannel/IRichMessage.cs

+8-8
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,14 @@ namespace CM.Text.BusinessMessaging.Model.MultiChannel
88
/// Requires a json derived type for serialization to work
99
/// </summary>
1010
[PublicAPI]
11-
[JsonDerivedType(typeof(MediaMessage))]
12-
[JsonDerivedType(typeof(ApplePayRequest))]
13-
[JsonDerivedType(typeof(CarouselMessage))]
14-
[JsonDerivedType(typeof(ContactMessage))]
15-
[JsonDerivedType(typeof(LocationPushMessage))]
16-
[JsonDerivedType(typeof(TemplateMessage))]
17-
[JsonDerivedType(typeof(TextMessage))]
18-
[JsonDerivedType(typeof(WhatsAppInteractiveMessage))]
11+
[JsonDerivedType(typeof(MediaMessage), nameof(MediaMessage))]
12+
[JsonDerivedType(typeof(ApplePayRequest), nameof(ApplePayRequest))]
13+
[JsonDerivedType(typeof(CarouselMessage), nameof(CarouselMessage))]
14+
[JsonDerivedType(typeof(ContactMessage), nameof(ContactMessage))]
15+
[JsonDerivedType(typeof(LocationPushMessage), nameof(LocationPushMessage))]
16+
[JsonDerivedType(typeof(TemplateMessage), nameof(TemplateMessage))]
17+
[JsonDerivedType(typeof(TextMessage), nameof(TextMessage))]
18+
[JsonDerivedType(typeof(WhatsAppInteractiveMessage), nameof(WhatsAppInteractiveMessage))]
1919
public interface IRichMessage
2020
{
2121
}

CM.Text/CM.Text.csproj

+4-4
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,12 @@
1313
<PackageLicenseFile>LICENSE</PackageLicenseFile>
1414
<PackageIcon>icon.png</PackageIcon>
1515
<PackageReleaseNotes>$([System.IO.File]::ReadAllText("$(MSBuildProjectDirectory)/../CHANGELOG.md"))</PackageReleaseNotes>
16-
<Version>2.9.0</Version>
16+
<Version>2.10.0</Version>
1717
<PackageProjectUrl>https://github.com/cmdotcom/text-sdk-dotnet</PackageProjectUrl>
1818
<NeutralLanguage>en</NeutralLanguage>
1919
<GenerateDocumentationFile>true</GenerateDocumentationFile>
20-
<AssemblyVersion>2.9.0</AssemblyVersion>
21-
<FileVersion>2.9.0</FileVersion>
20+
<AssemblyVersion>2.10.0</AssemblyVersion>
21+
<FileVersion>2.10.0</FileVersion>
2222
<GeneratePackageOnBuild>True</GeneratePackageOnBuild>
2323
</PropertyGroup>
2424

@@ -63,7 +63,7 @@
6363
</ItemGroup>
6464

6565
<ItemGroup Condition=" '$(TargetFramework)' == 'netstandard2.0' ">
66-
<PackageReference Include="System.Text.Json" Version="8.0.0" />
66+
<PackageReference Include="System.Text.Json" Version="8.0.5" />
6767
</ItemGroup>
6868

6969
<ItemGroup>

0 commit comments

Comments
 (0)