Skip to content

Commit 2079002

Browse files
fix!: Align LegalHoldPolicyAssignedItem with API (box/box-openapi#1554) (box/box-openapi#590) (#1427)
1 parent 18e779a commit 2079002

File tree

12 files changed

+184
-170
lines changed

12 files changed

+184
-170
lines changed

.codegen.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{ "engineHash": "7c01dda", "specHash": "2bd751f", "version": "10.7.0" }
1+
{ "engineHash": "7c01dda", "specHash": "74a1e4a", "version": "10.7.0" }

Box.Sdk.Gen.Net/Managers/TrashedItems/ITrashedItemsManager.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,9 @@ public interface ITrashedItemsManager {
1616
/// attributes that are not returned by default.
1717
///
1818
/// This endpoint defaults to use offset-based pagination, yet also supports
19-
/// marker-based pagination using the `marker` parameter.
19+
/// marker-based pagination using the `marker` parameter.
20+
///
21+
/// The number of entries returned may be less than `total_count`. For example, if a user deletes items from a shared folder and is later removed as a collaborator, those deleted items will no longer appear in this endpoint’s results, even though they are still included in `total_count`.
2022
/// </summary>
2123
/// <param name="queryParams">
2224
/// Query parameters of getTrashedItems method

Box.Sdk.Gen.Net/Managers/TrashedItems/TrashedItemsManager.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,9 @@ public TrashedItemsManager(NetworkSession? networkSession = default) {
2323
/// attributes that are not returned by default.
2424
///
2525
/// This endpoint defaults to use offset-based pagination, yet also supports
26-
/// marker-based pagination using the `marker` parameter.
26+
/// marker-based pagination using the `marker` parameter.
27+
///
28+
/// The number of entries returned may be less than `total_count`. For example, if a user deletes items from a shared folder and is later removed as a collaborator, those deleted items will no longer appear in this endpoint’s results, even though they are still included in `total_count`.
2729
/// </summary>
2830
/// <param name="queryParams">
2931
/// Query parameters of getTrashedItems method

Box.Sdk.Gen.Net/Schemas/LegalHoldPolicyAssignedItem/LegalHoldPolicyAssignedItem.cs

Lines changed: 37 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -1,65 +1,48 @@
11
using Box.Sdk.Gen;
2-
using System;
3-
using System.Text.Json;
42
using System.Text.Json.Serialization;
5-
using Box.Sdk.Gen.Schemas;
63
using Box.Sdk.Gen.Internal;
4+
using System.Collections.Generic;
75

86
namespace Box.Sdk.Gen.Schemas {
9-
[JsonConverter(typeof(LegalHoldPolicyAssignedItemConverter))]
10-
public class LegalHoldPolicyAssignedItem {
11-
internal OneOf<File, Folder, WebLink> _oneOf;
12-
13-
public File? File => _oneOf._val0;
14-
15-
public Folder? Folder => _oneOf._val1;
16-
17-
public WebLink? WebLink => _oneOf._val2;
18-
19-
public LegalHoldPolicyAssignedItem(File value) {_oneOf = new OneOf<File, Folder, WebLink>(value);}
20-
21-
public LegalHoldPolicyAssignedItem(Folder value) {_oneOf = new OneOf<File, Folder, WebLink>(value);}
22-
23-
public LegalHoldPolicyAssignedItem(WebLink value) {_oneOf = new OneOf<File, Folder, WebLink>(value);}
24-
25-
public static implicit operator LegalHoldPolicyAssignedItem(File value) => new LegalHoldPolicyAssignedItem(value);
26-
27-
public static implicit operator LegalHoldPolicyAssignedItem(Folder value) => new LegalHoldPolicyAssignedItem(value);
28-
29-
public static implicit operator LegalHoldPolicyAssignedItem(WebLink value) => new LegalHoldPolicyAssignedItem(value);
7+
public class LegalHoldPolicyAssignedItem : ISerializable {
8+
/// <summary>
9+
/// The type of item the policy is assigned to.
10+
/// </summary>
11+
[JsonPropertyName("type")]
12+
[JsonConverter(typeof(StringEnumConverter<LegalHoldPolicyAssignedItemTypeField>))]
13+
public StringEnum<LegalHoldPolicyAssignedItemTypeField> Type { get; }
14+
15+
/// <summary>
16+
/// The ID of the item the policy is assigned to.
17+
/// </summary>
18+
[JsonPropertyName("id")]
19+
public string Id { get; }
20+
21+
public LegalHoldPolicyAssignedItem(LegalHoldPolicyAssignedItemTypeField type, string id) {
22+
Type = type;
23+
Id = id;
24+
}
3025

31-
class LegalHoldPolicyAssignedItemConverter : JsonConverter<LegalHoldPolicyAssignedItem> {
32-
public override LegalHoldPolicyAssignedItem Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) {
33-
using var document = JsonDocument.ParseValue(ref reader);
34-
var discriminant0Present = document.RootElement.TryGetProperty("type", out var discriminant0);
35-
if (discriminant0Present) {
36-
switch (discriminant0.ToString()){
37-
case "file":
38-
return JsonSerializer.Deserialize<File>(document) ?? throw new Exception($"Could not deserialize {document} to File");
39-
case "folder":
40-
return JsonSerializer.Deserialize<Folder>(document) ?? throw new Exception($"Could not deserialize {document} to Folder");
41-
case "web_link":
42-
return JsonSerializer.Deserialize<WebLink>(document) ?? throw new Exception($"Could not deserialize {document} to WebLink");
43-
}
44-
}
45-
throw new Exception($"Discriminant not found in json payload {document.RootElement} while try to converting to type {typeToConvert}");
46-
}
26+
[JsonConstructorAttribute]
27+
internal LegalHoldPolicyAssignedItem(StringEnum<LegalHoldPolicyAssignedItemTypeField> type, string id) {
28+
Type = type;
29+
Id = id;
30+
}
31+
internal string? RawJson { get; set; } = default;
32+
33+
void ISerializable.SetJson(string json) {
34+
RawJson = json;
35+
}
4736

48-
public override void Write(Utf8JsonWriter writer, LegalHoldPolicyAssignedItem? value, JsonSerializerOptions options) {
49-
if (value?.File != null) {
50-
JsonSerializer.Serialize(writer, value.File, options);
51-
return;
52-
}
53-
if (value?.Folder != null) {
54-
JsonSerializer.Serialize(writer, value.Folder, options);
55-
return;
56-
}
57-
if (value?.WebLink != null) {
58-
JsonSerializer.Serialize(writer, value.WebLink, options);
59-
return;
60-
}
61-
}
37+
string? ISerializable.GetJson() {
38+
return RawJson;
39+
}
6240

41+
/// <summary>
42+
/// Returns raw json response returned from the API.
43+
/// </summary>
44+
public Dictionary<string, object?>? GetRawData() {
45+
return SimpleJsonSerializer.GetAllFields(this);
6346
}
6447

6548
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
using System.ComponentModel;
2+
using Box.Sdk.Gen.Internal;
3+
4+
namespace Box.Sdk.Gen.Schemas {
5+
public enum LegalHoldPolicyAssignedItemTypeField {
6+
[Description("file")]
7+
File,
8+
[Description("file_version")]
9+
FileVersion,
10+
[Description("folder")]
11+
Folder,
12+
[Description("user")]
13+
User,
14+
[Description("ownership")]
15+
Ownership,
16+
[Description("interactions")]
17+
Interactions
18+
}
19+
}

Box.Sdk.Gen.NetFramework/Managers/TrashedItems/TrashedItemsManager.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,9 @@ public TrashedItemsManager(NetworkSession networkSession = default) {
2323
/// attributes that are not returned by default.
2424
///
2525
/// This endpoint defaults to use offset-based pagination, yet also supports
26-
/// marker-based pagination using the `marker` parameter.
26+
/// marker-based pagination using the `marker` parameter.
27+
///
28+
/// The number of entries returned may be less than `total_count`. For example, if a user deletes items from a shared folder and is later removed as a collaborator, those deleted items will no longer appear in this endpoint’s results, even though they are still included in `total_count`.
2729
/// </summary>
2830
/// <param name="queryParams">
2931
/// Query parameters of getTrashedItems method

Box.Sdk.Gen.NetFramework/Schemas/LegalHoldPolicyAssignedItem/LegalHoldPolicyAssignedItem.cs

Lines changed: 37 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -1,66 +1,48 @@
11
using Box.Sdk.Gen;
2-
using System;
3-
using System.Text.Json;
42
using System.Text.Json.Serialization;
5-
using Box.Sdk.Gen.Schemas;
63
using Box.Sdk.Gen.Internal;
4+
using System.Collections.Generic;
75

86
namespace Box.Sdk.Gen.Schemas {
9-
[JsonConverter(typeof(LegalHoldPolicyAssignedItemConverter))]
10-
public class LegalHoldPolicyAssignedItem {
11-
internal OneOf<File, Folder, WebLink> _oneOf;
12-
13-
public File File => _oneOf._val0;
14-
15-
public Folder Folder => _oneOf._val1;
16-
17-
public WebLink WebLink => _oneOf._val2;
18-
19-
public LegalHoldPolicyAssignedItem(File value) {_oneOf = new OneOf<File, Folder, WebLink>(value);}
20-
21-
public LegalHoldPolicyAssignedItem(Folder value) {_oneOf = new OneOf<File, Folder, WebLink>(value);}
22-
23-
public LegalHoldPolicyAssignedItem(WebLink value) {_oneOf = new OneOf<File, Folder, WebLink>(value);}
24-
25-
public static implicit operator LegalHoldPolicyAssignedItem(File value) => new LegalHoldPolicyAssignedItem(value);
26-
27-
public static implicit operator LegalHoldPolicyAssignedItem(Folder value) => new LegalHoldPolicyAssignedItem(value);
28-
29-
public static implicit operator LegalHoldPolicyAssignedItem(WebLink value) => new LegalHoldPolicyAssignedItem(value);
7+
public class LegalHoldPolicyAssignedItem : ISerializable {
8+
/// <summary>
9+
/// The type of item the policy is assigned to.
10+
/// </summary>
11+
[JsonPropertyName("type")]
12+
[JsonConverter(typeof(StringEnumConverter<LegalHoldPolicyAssignedItemTypeField>))]
13+
public StringEnum<LegalHoldPolicyAssignedItemTypeField> Type { get; set; }
14+
15+
/// <summary>
16+
/// The ID of the item the policy is assigned to.
17+
/// </summary>
18+
[JsonPropertyName("id")]
19+
public string Id { get; set; }
20+
21+
public LegalHoldPolicyAssignedItem(LegalHoldPolicyAssignedItemTypeField type, string id) {
22+
Type = type;
23+
Id = id;
24+
}
3025

31-
class LegalHoldPolicyAssignedItemConverter : JsonConverter<LegalHoldPolicyAssignedItem> {
32-
public override LegalHoldPolicyAssignedItem Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) {
33-
using (var document = JsonDocument.ParseValue(ref reader)){
34-
var discriminant0Present = document.RootElement.TryGetProperty("type", out var discriminant0);
35-
if (discriminant0Present) {
36-
switch (discriminant0.ToString()){
37-
case "file":
38-
return JsonSerializer.Deserialize<File>(document) ?? throw new Exception($"Could not deserialize {document} to File");
39-
case "folder":
40-
return JsonSerializer.Deserialize<Folder>(document) ?? throw new Exception($"Could not deserialize {document} to Folder");
41-
case "web_link":
42-
return JsonSerializer.Deserialize<WebLink>(document) ?? throw new Exception($"Could not deserialize {document} to WebLink");
43-
}
44-
}
45-
throw new Exception($"Discriminant not found in json payload {document.RootElement} while try to converting to type {typeToConvert}");
46-
}
47-
}
26+
[JsonConstructorAttribute]
27+
internal LegalHoldPolicyAssignedItem(StringEnum<LegalHoldPolicyAssignedItemTypeField> type, string id) {
28+
Type = type;
29+
Id = id;
30+
}
31+
internal string RawJson { get; set; } = default;
32+
33+
void ISerializable.SetJson(string json) {
34+
RawJson = json;
35+
}
4836

49-
public override void Write(Utf8JsonWriter writer, LegalHoldPolicyAssignedItem value, JsonSerializerOptions options) {
50-
if (value?.File != null) {
51-
JsonSerializer.Serialize(writer, value.File, options);
52-
return;
53-
}
54-
if (value?.Folder != null) {
55-
JsonSerializer.Serialize(writer, value.Folder, options);
56-
return;
57-
}
58-
if (value?.WebLink != null) {
59-
JsonSerializer.Serialize(writer, value.WebLink, options);
60-
return;
61-
}
62-
}
37+
string ISerializable.GetJson() {
38+
return RawJson;
39+
}
6340

41+
/// <summary>
42+
/// Returns raw json response returned from the API.
43+
/// </summary>
44+
public Dictionary<string, object> GetRawData() {
45+
return SimpleJsonSerializer.GetAllFields(this);
6446
}
6547

6648
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
using System.ComponentModel;
2+
using Box.Sdk.Gen.Internal;
3+
4+
namespace Box.Sdk.Gen.Schemas {
5+
public enum LegalHoldPolicyAssignedItemTypeField {
6+
[Description("file")]
7+
File,
8+
[Description("file_version")]
9+
FileVersion,
10+
[Description("folder")]
11+
Folder,
12+
[Description("user")]
13+
User,
14+
[Description("ownership")]
15+
Ownership,
16+
[Description("interactions")]
17+
Interactions
18+
}
19+
}

Box.Sdk.Gen.NetStandard/Managers/TrashedItems/TrashedItemsManager.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,9 @@ public TrashedItemsManager(NetworkSession networkSession = default) {
2323
/// attributes that are not returned by default.
2424
///
2525
/// This endpoint defaults to use offset-based pagination, yet also supports
26-
/// marker-based pagination using the `marker` parameter.
26+
/// marker-based pagination using the `marker` parameter.
27+
///
28+
/// The number of entries returned may be less than `total_count`. For example, if a user deletes items from a shared folder and is later removed as a collaborator, those deleted items will no longer appear in this endpoint’s results, even though they are still included in `total_count`.
2729
/// </summary>
2830
/// <param name="queryParams">
2931
/// Query parameters of getTrashedItems method

Box.Sdk.Gen.NetStandard/Schemas/LegalHoldPolicyAssignedItem/LegalHoldPolicyAssignedItem.cs

Lines changed: 37 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -1,66 +1,48 @@
11
using Box.Sdk.Gen;
2-
using System;
3-
using System.Text.Json;
42
using System.Text.Json.Serialization;
5-
using Box.Sdk.Gen.Schemas;
63
using Box.Sdk.Gen.Internal;
4+
using System.Collections.Generic;
75

86
namespace Box.Sdk.Gen.Schemas {
9-
[JsonConverter(typeof(LegalHoldPolicyAssignedItemConverter))]
10-
public class LegalHoldPolicyAssignedItem {
11-
internal OneOf<File, Folder, WebLink> _oneOf;
12-
13-
public File File => _oneOf._val0;
14-
15-
public Folder Folder => _oneOf._val1;
16-
17-
public WebLink WebLink => _oneOf._val2;
18-
19-
public LegalHoldPolicyAssignedItem(File value) {_oneOf = new OneOf<File, Folder, WebLink>(value);}
20-
21-
public LegalHoldPolicyAssignedItem(Folder value) {_oneOf = new OneOf<File, Folder, WebLink>(value);}
22-
23-
public LegalHoldPolicyAssignedItem(WebLink value) {_oneOf = new OneOf<File, Folder, WebLink>(value);}
24-
25-
public static implicit operator LegalHoldPolicyAssignedItem(File value) => new LegalHoldPolicyAssignedItem(value);
26-
27-
public static implicit operator LegalHoldPolicyAssignedItem(Folder value) => new LegalHoldPolicyAssignedItem(value);
28-
29-
public static implicit operator LegalHoldPolicyAssignedItem(WebLink value) => new LegalHoldPolicyAssignedItem(value);
7+
public class LegalHoldPolicyAssignedItem : ISerializable {
8+
/// <summary>
9+
/// The type of item the policy is assigned to.
10+
/// </summary>
11+
[JsonPropertyName("type")]
12+
[JsonConverter(typeof(StringEnumConverter<LegalHoldPolicyAssignedItemTypeField>))]
13+
public StringEnum<LegalHoldPolicyAssignedItemTypeField> Type { get; set; }
14+
15+
/// <summary>
16+
/// The ID of the item the policy is assigned to.
17+
/// </summary>
18+
[JsonPropertyName("id")]
19+
public string Id { get; set; }
20+
21+
public LegalHoldPolicyAssignedItem(LegalHoldPolicyAssignedItemTypeField type, string id) {
22+
Type = type;
23+
Id = id;
24+
}
3025

31-
class LegalHoldPolicyAssignedItemConverter : JsonConverter<LegalHoldPolicyAssignedItem> {
32-
public override LegalHoldPolicyAssignedItem Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) {
33-
using (var document = JsonDocument.ParseValue(ref reader)){
34-
var discriminant0Present = document.RootElement.TryGetProperty("type", out var discriminant0);
35-
if (discriminant0Present) {
36-
switch (discriminant0.ToString()){
37-
case "file":
38-
return JsonSerializer.Deserialize<File>(document) ?? throw new Exception($"Could not deserialize {document} to File");
39-
case "folder":
40-
return JsonSerializer.Deserialize<Folder>(document) ?? throw new Exception($"Could not deserialize {document} to Folder");
41-
case "web_link":
42-
return JsonSerializer.Deserialize<WebLink>(document) ?? throw new Exception($"Could not deserialize {document} to WebLink");
43-
}
44-
}
45-
throw new Exception($"Discriminant not found in json payload {document.RootElement} while try to converting to type {typeToConvert}");
46-
}
47-
}
26+
[JsonConstructorAttribute]
27+
internal LegalHoldPolicyAssignedItem(StringEnum<LegalHoldPolicyAssignedItemTypeField> type, string id) {
28+
Type = type;
29+
Id = id;
30+
}
31+
internal string RawJson { get; set; } = default;
32+
33+
void ISerializable.SetJson(string json) {
34+
RawJson = json;
35+
}
4836

49-
public override void Write(Utf8JsonWriter writer, LegalHoldPolicyAssignedItem value, JsonSerializerOptions options) {
50-
if (value?.File != null) {
51-
JsonSerializer.Serialize(writer, value.File, options);
52-
return;
53-
}
54-
if (value?.Folder != null) {
55-
JsonSerializer.Serialize(writer, value.Folder, options);
56-
return;
57-
}
58-
if (value?.WebLink != null) {
59-
JsonSerializer.Serialize(writer, value.WebLink, options);
60-
return;
61-
}
62-
}
37+
string ISerializable.GetJson() {
38+
return RawJson;
39+
}
6340

41+
/// <summary>
42+
/// Returns raw json response returned from the API.
43+
/// </summary>
44+
public Dictionary<string, object> GetRawData() {
45+
return SimpleJsonSerializer.GetAllFields(this);
6446
}
6547

6648
}

0 commit comments

Comments
 (0)