Skip to content

Commit 72a57cd

Browse files
committed
feat: ✨ adds JsonConverters for Node and TextNode
1 parent 371b5eb commit 72a57cd

File tree

3 files changed

+154
-0
lines changed

3 files changed

+154
-0
lines changed
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
using Contentstack.Management.Core.Models;
2+
using Newtonsoft.Json;
3+
using Contentstack.Management.Core.Abstractions;
4+
5+
namespace Contentstack.Management.Core.Tests.Model
6+
{
7+
public partial class PageJSONRTE : IEntry
8+
{
9+
public const string ContentType = "page_json_rte";
10+
11+
[JsonProperty(propertyName: "uid")]
12+
public string Uid { get; set; }
13+
[JsonProperty(propertyName: "_content_type_uid")]
14+
public string ContentTypeUid { get; set; }
15+
public string Title { get; set; }
16+
[JsonProperty(propertyName: "rte_data")]
17+
public Node RteData { get; set; }
18+
}
19+
}
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
using System;
2+
using Newtonsoft.Json;
3+
using Newtonsoft.Json.Linq;
4+
using Contentstack.Management.Core.Models;
5+
6+
namespace Contentstack.Management.Core.Utils
7+
{
8+
public class NodeJsonConverter : JsonConverter<Node>
9+
{
10+
public override Node ReadJson(JsonReader reader, Type objectType, Node existingValue, bool hasExistingValue, JsonSerializer serializer)
11+
{
12+
Node node = null;
13+
JObject jObject = JObject.Load(reader);
14+
if (jObject["type"] == null)
15+
{
16+
node = new TextNode();
17+
node.type = "text";
18+
}
19+
else
20+
{
21+
node = new Node();
22+
}
23+
serializer.Populate(jObject.CreateReader(), node);
24+
return node;
25+
}
26+
27+
public override void WriteJson(JsonWriter writer, Node value, JsonSerializer serializer)
28+
{
29+
writer.WriteStartObject();
30+
31+
writer.WritePropertyName("type");
32+
writer.WriteValue(value.type);
33+
34+
if (value.attrs != null)
35+
{
36+
writer.WritePropertyName("attrs");
37+
serializer.Serialize(writer, value.attrs);
38+
}
39+
40+
if (value.children != null)
41+
{
42+
writer.WritePropertyName("children");
43+
writer.WriteStartArray();
44+
foreach (var child in value.children)
45+
{
46+
serializer.Serialize(writer, child);
47+
}
48+
writer.WriteEndArray();
49+
}
50+
51+
writer.WriteEndObject();
52+
}
53+
}
54+
}
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
using System;
2+
using Newtonsoft.Json;
3+
using Newtonsoft.Json.Linq;
4+
using Contentstack.Management.Core.Models;
5+
using Microsoft.Extensions.Options;
6+
7+
namespace Contentstack.Management.Core.Utils
8+
{
9+
public class TextNodeJsonConverter : JsonConverter<TextNode>
10+
{
11+
public override TextNode ReadJson(JsonReader reader, Type objectType, TextNode existingValue, bool hasExistingValue, JsonSerializer serializer)
12+
{
13+
throw new NotImplementedException();
14+
}
15+
16+
public override void WriteJson(JsonWriter writer, TextNode value, JsonSerializer serializer)
17+
{
18+
writer.WriteStartObject();
19+
20+
if (value.attrs != null)
21+
{
22+
writer.WritePropertyName("attrs");
23+
serializer.Serialize(writer, value.attrs);
24+
}
25+
26+
if (value.children != null)
27+
{
28+
writer.WritePropertyName("children");
29+
writer.WriteStartArray();
30+
foreach (var child in value.children)
31+
{
32+
serializer.Serialize(writer, child);
33+
}
34+
writer.WriteEndArray();
35+
}
36+
// Write additional properties specific to TextNode
37+
if (value.bold)
38+
{
39+
writer.WritePropertyName("bold");
40+
writer.WriteValue(value.bold);
41+
}
42+
if (value.italic)
43+
{
44+
writer.WritePropertyName("italic");
45+
writer.WriteValue(value.italic);
46+
}
47+
if (value.underline)
48+
{
49+
writer.WritePropertyName("underline");
50+
writer.WriteValue(value.underline);
51+
}
52+
if (value.strikethrough)
53+
{
54+
writer.WritePropertyName("strikethrough");
55+
writer.WriteValue(value.strikethrough);
56+
}
57+
if (value.inlineCode)
58+
{
59+
writer.WritePropertyName("inlineCode");
60+
writer.WriteValue(value.inlineCode);
61+
}
62+
if (value.subscript)
63+
{
64+
writer.WritePropertyName("subscript");
65+
writer.WriteValue(value.subscript);
66+
}
67+
if (value.superscript)
68+
{
69+
writer.WritePropertyName("superscript");
70+
writer.WriteValue(value.superscript);
71+
}
72+
if (!string.IsNullOrEmpty(value.text))
73+
{
74+
writer.WritePropertyName("text");
75+
writer.WriteValue(value.text);
76+
}
77+
78+
writer.WriteEndObject();
79+
}
80+
}
81+
}

0 commit comments

Comments
 (0)