Skip to content

Commit 0d3386d

Browse files
committed
added required search response classes
1 parent ba490ac commit 0d3386d

25 files changed

+2483
-21
lines changed
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
// -----------------------------------------------------------------------------
2+
// Copyright (c) Microsoft Corporation. All rights reserved.
3+
// -----------------------------------------------------------------------------
4+
5+
using System;
6+
using System.Text.Json;
7+
using System.Text.Json.Serialization;
8+
using SearchScorer.Common;
9+
10+
namespace SearchScorer.Common
11+
{
12+
public class ExtensionBadgeConverter : JsonConverter<ExtensionBadge>
13+
{
14+
public override ExtensionBadge Read(
15+
ref Utf8JsonReader reader,
16+
Type typeToConvert,
17+
JsonSerializerOptions options)
18+
{
19+
if (reader.TokenType != JsonTokenType.StartObject)
20+
{
21+
throw new JsonException();
22+
}
23+
24+
var extensionFile = new ExtensionBadge();
25+
26+
while (reader.Read())
27+
{
28+
if (reader.TokenType == JsonTokenType.EndObject)
29+
{
30+
return extensionFile;
31+
}
32+
33+
if (reader.TokenType == JsonTokenType.PropertyName)
34+
{
35+
string propertyName = reader.GetString().ToLowerInvariant();
36+
reader.Read();
37+
switch (propertyName)
38+
{
39+
case "link":
40+
extensionFile.Link = reader.GetString();
41+
break;
42+
case "imguri":
43+
extensionFile.ImgUri = reader.GetString();
44+
break;
45+
case "description":
46+
extensionFile.Description = reader.GetString();
47+
break;
48+
}
49+
}
50+
}
51+
52+
throw new JsonException();
53+
}
54+
55+
public override void Write(Utf8JsonWriter writer,
56+
ExtensionBadge extensionFile,
57+
JsonSerializerOptions options)
58+
{
59+
writer.WriteStartObject();
60+
61+
writer.WriteString("link", extensionFile.Link);
62+
writer.WriteString("imgUri", extensionFile.ImgUri);
63+
writer.WriteString("description", extensionFile.Description);
64+
65+
writer.WriteEndObject();
66+
}
67+
}
68+
}
Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
// -----------------------------------------------------------------------------
2+
// Copyright (c) Microsoft Corporation. All rights reserved.
3+
// -----------------------------------------------------------------------------
4+
5+
using System;
6+
using System.Text.Json;
7+
using System.Text.Json.Serialization;
8+
using SearchScorer.Common;
9+
10+
namespace SearchScorer.Common
11+
{
12+
public class ExtensionFileConverter : JsonConverter<ExtensionFile>
13+
{
14+
public override ExtensionFile Read(
15+
ref Utf8JsonReader reader,
16+
Type typeToConvert,
17+
JsonSerializerOptions options)
18+
{
19+
if (reader.TokenType != JsonTokenType.StartObject)
20+
{
21+
throw new JsonException();
22+
}
23+
24+
var extensionFile = new ExtensionFile();
25+
26+
while (reader.Read())
27+
{
28+
if (reader.TokenType == JsonTokenType.EndObject)
29+
{
30+
return extensionFile;
31+
}
32+
33+
if (reader.TokenType == JsonTokenType.PropertyName)
34+
{
35+
string propertyName = reader.GetString().ToLowerInvariant();
36+
reader.Read();
37+
switch (propertyName)
38+
{
39+
case "assettype":
40+
extensionFile.AssetType = reader.GetString();
41+
break;
42+
case "language":
43+
extensionFile.Language = reader.GetString();
44+
break;
45+
case "source":
46+
extensionFile.Source = reader.GetString();
47+
break;
48+
case "version":
49+
extensionFile.Version = reader.GetString();
50+
break;
51+
case "contenttype":
52+
extensionFile.ContentType = reader.GetString();
53+
break;
54+
case "fileid":
55+
extensionFile.FileId = reader.GetInt32();
56+
break;
57+
case "shortdescription":
58+
extensionFile.ShortDescription = reader.GetString();
59+
break;
60+
case "isdefault":
61+
extensionFile.IsDefault = reader.GetBoolean();
62+
break;
63+
case "ispublic":
64+
extensionFile.IsPublic = reader.GetBoolean();
65+
break;
66+
}
67+
}
68+
}
69+
70+
throw new JsonException();
71+
}
72+
73+
public override void Write(Utf8JsonWriter writer,
74+
ExtensionFile extensionFile,
75+
JsonSerializerOptions options)
76+
{
77+
writer.WriteStartObject();
78+
79+
writer.WriteString("assetType", extensionFile.AssetType);
80+
if (extensionFile.Language != null)
81+
{
82+
writer.WriteString("language", extensionFile.Language);
83+
}
84+
85+
if (extensionFile.Source != null)
86+
{
87+
writer.WriteString("source", extensionFile.Source);
88+
}
89+
90+
writer.WriteEndObject();
91+
}
92+
}
93+
}
Lines changed: 186 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,186 @@
1+
// -----------------------------------------------------------------------------
2+
// Copyright (c) Microsoft Corporation. All rights reserved.
3+
// -----------------------------------------------------------------------------
4+
5+
using System;
6+
using System.Collections.Generic;
7+
using System.Linq;
8+
using System.Text.Json;
9+
using System.Text.Json.Serialization;
10+
using SearchScorer.Common;
11+
12+
namespace SearchScorer.Common
13+
{
14+
public class ExtensionVersionConverter : JsonConverter<ExtensionVersion>
15+
{
16+
public override ExtensionVersion Read(
17+
ref Utf8JsonReader reader,
18+
Type typeToConvert,
19+
JsonSerializerOptions options)
20+
{
21+
if (reader.TokenType != JsonTokenType.StartObject)
22+
{
23+
throw new JsonException();
24+
}
25+
26+
var extensionVersion = new ExtensionVersion();
27+
28+
while (reader.Read())
29+
{
30+
if (reader.TokenType == JsonTokenType.EndObject)
31+
{
32+
return extensionVersion;
33+
}
34+
35+
if (reader.TokenType == JsonTokenType.PropertyName)
36+
{
37+
string propertyName = reader.GetString().ToLowerInvariant();
38+
reader.Read();
39+
switch (propertyName)
40+
{
41+
case "version":
42+
extensionVersion.Version = reader.GetString();
43+
break;
44+
case "flags":
45+
var extensionVersionFlags = reader.GetString();
46+
var versionFlags = extensionVersionFlags.Split(",")
47+
.Select(x => x.Trim())
48+
.ToList();
49+
ExtensionVersionFlags flags = default(ExtensionVersionFlags);
50+
foreach (var flag in versionFlags)
51+
{
52+
flags = flags | (ExtensionVersionFlags)Enum.Parse(typeof(ExtensionVersionFlags), flag, true);
53+
}
54+
extensionVersion.Flags = flags;
55+
break;
56+
case "lastupdated":
57+
extensionVersion.LastUpdated = reader.GetDateTime();
58+
break;
59+
case "versiondescription":
60+
extensionVersion.VersionDescription = reader.GetString();
61+
break;
62+
case "validationresultmessage":
63+
extensionVersion.ValidationResultMessage = reader.GetString();
64+
break;
65+
case "files":
66+
string files;
67+
using (var jsonDoc = JsonDocument.ParseValue(ref reader))
68+
{
69+
files = jsonDoc.RootElement.GetRawText();
70+
}
71+
72+
extensionVersion.Files = JsonSerializer.Deserialize<List<ExtensionFile>>(files);
73+
break;
74+
case "properties":
75+
string properties;
76+
using (var jsonDoc = JsonDocument.ParseValue(ref reader))
77+
{
78+
properties = jsonDoc.RootElement.GetRawText();
79+
}
80+
extensionVersion.Properties = JsonSerializer.Deserialize<List<KeyValuePair<String, String>>>(properties);
81+
break;
82+
case "badges":
83+
string badges;
84+
using (var jsonDoc = JsonDocument.ParseValue(ref reader))
85+
{
86+
badges = jsonDoc.RootElement.GetRawText();
87+
}
88+
extensionVersion.Badges = JsonSerializer.Deserialize<List<ExtensionBadge>>(badges);
89+
break;
90+
case "asseturi":
91+
extensionVersion.AssetUri = reader.GetString();
92+
break;
93+
case "fallbackasseturi":
94+
extensionVersion.FallbackAssetUri = reader.GetString();
95+
break;
96+
case "cdndirectory":
97+
extensionVersion.CdnDirectory = reader.GetString();
98+
break;
99+
case "iscdnenabled":
100+
extensionVersion.IsCdnEnabled = reader.GetBoolean();
101+
break;
102+
case "targetplatform":
103+
extensionVersion.TargetPlatform = reader.GetString();
104+
break;
105+
}
106+
}
107+
}
108+
109+
throw new JsonException();
110+
}
111+
112+
public override void Write(Utf8JsonWriter writer,
113+
ExtensionVersion extensionVersion,
114+
JsonSerializerOptions options)
115+
{
116+
writer.WriteStartObject();
117+
writer.WriteString("version", extensionVersion.Version);
118+
if (extensionVersion.TargetPlatform != null)
119+
{
120+
writer.WriteString("targetPlatform", extensionVersion.TargetPlatform);
121+
}
122+
123+
writer.WriteString("flags", extensionVersion.Flags.ToString().ConvertFlagsToString());
124+
writer.WriteString("lastUpdated", extensionVersion.LastUpdated);
125+
if (extensionVersion.VersionDescription != null)
126+
{
127+
writer.WriteString("versionDescription", extensionVersion.VersionDescription);
128+
}
129+
130+
if (extensionVersion.ValidationResultMessage != null)
131+
{
132+
writer.WriteString("validationResultMessage", extensionVersion.ValidationResultMessage);
133+
}
134+
135+
if (extensionVersion.Files != null)
136+
{
137+
writer.WriteStartArray("files");
138+
ExtensionFileConverter extensionFileConverter = new ExtensionFileConverter();
139+
foreach (var file in extensionVersion.Files)
140+
{
141+
extensionFileConverter.Write(writer, file, options);
142+
}
143+
144+
writer.WriteEndArray();
145+
}
146+
147+
if (extensionVersion.Properties != null)
148+
{
149+
writer.WriteStartArray("properties");
150+
foreach (var property in extensionVersion.Properties)
151+
{
152+
writer.WriteStartObject();
153+
writer.WriteString("key", property.Key);
154+
writer.WriteString("value", property.Value);
155+
writer.WriteEndObject();
156+
}
157+
158+
writer.WriteEndArray();
159+
}
160+
161+
if (extensionVersion.Badges != null)
162+
{
163+
writer.WriteStartArray("badges");
164+
ExtensionBadgeConverter extensionBadgeConverter = new ExtensionBadgeConverter();
165+
foreach (var file in extensionVersion.Badges)
166+
{
167+
extensionBadgeConverter.Write(writer, file, options);
168+
}
169+
170+
writer.WriteEndArray();
171+
}
172+
173+
if (extensionVersion.AssetUri != null)
174+
{
175+
writer.WriteString("assetUri", extensionVersion.AssetUri);
176+
}
177+
178+
if (extensionVersion.FallbackAssetUri != null)
179+
{
180+
writer.WriteString("fallbackAssetUri", extensionVersion.FallbackAssetUri);
181+
}
182+
183+
writer.WriteEndObject();
184+
}
185+
}
186+
}

0 commit comments

Comments
 (0)