Skip to content

Commit 3ec5fcb

Browse files
Fix missing ModerationKind and ModerationStatus fields
1 parent be0d317 commit 3ec5fcb

File tree

7 files changed

+69
-17
lines changed

7 files changed

+69
-17
lines changed

CloudinaryDotNet.IntegrationTests/AdminApi/BrowseResourcesTest.cs

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,13 +61,22 @@ public void TestListByModerationUpdate()
6161
Assert.True(approved.Resources.Count(r => r.PublicId == uploadResults[1].PublicId) == 0, approved.Error?.Message);
6262
Assert.True(approved.Resources.Count(r => r.PublicId == uploadResults[2].PublicId) == 0, approved.Error?.Message);
6363

64+
Assert.True(approved.Resources.First().ModerationKind == MODERATION_MANUAL, approved.Error?.Message);
65+
Assert.True(approved.Resources.First().ModerationStatus == ModerationStatus.Approved, approved.Error?.Message);
66+
6467
Assert.True(rejected.Resources.Count(r => r.PublicId == uploadResults[0].PublicId) == 0, rejected.Error?.Message);
6568
Assert.True(rejected.Resources.Count(r => r.PublicId == uploadResults[1].PublicId) > 0, rejected.Error?.Message);
6669
Assert.True(rejected.Resources.Count(r => r.PublicId == uploadResults[2].PublicId) == 0, rejected.Error?.Message);
6770

71+
Assert.True(rejected.Resources.First().ModerationKind == MODERATION_MANUAL, approved.Error?.Message);
72+
Assert.True(rejected.Resources.First().ModerationStatus == ModerationStatus.Rejected, approved.Error?.Message);
73+
6874
Assert.True(pending.Resources.Count(r => r.PublicId == uploadResults[0].PublicId) == 0, pending.Error?.Message);
6975
Assert.True(pending.Resources.Count(r => r.PublicId == uploadResults[1].PublicId) == 0, pending.Error?.Message);
7076
Assert.True(pending.Resources.Count(r => r.PublicId == uploadResults[2].PublicId) > 0, pending.Error?.Message);
77+
78+
Assert.True(pending.Resources.First().ModerationKind == MODERATION_MANUAL, approved.Error?.Message);
79+
Assert.True(pending.Resources.First().ModerationStatus == ModerationStatus.Pending, approved.Error?.Message);
7180
}
7281

7382
[Test, Ignore("test needs to be re-written with mocking - it fails when there are many resources")]
@@ -224,8 +233,7 @@ public void TestListResourcesByPrefix()
224233
Assert.IsTrue(
225234
result
226235
.Resources
227-
.Where(res => (res.Context == null ? false : res.Context["custom"]["context"].ToString() == "abc"))
228-
.Count() > 0, result.Error?.Message);
236+
.Count(res => (res.Context == null ? false : res.Context["custom"]["context"].ToString() == "abc")) > 0, result.Error?.Message);
229237
}
230238

231239
private async Task<string> UploadTestResource(string publicId)
@@ -300,7 +308,7 @@ public void TestListResourcesByPublicIds()
300308

301309
Assert.NotNull(result);
302310
Assert.AreEqual(2, result.Resources.Length, "expected to find {0} but got {1}", new Object[] { publicIds.Aggregate((current, next) => current + ", " + next), result.Resources.Select(r => r.PublicId).Aggregate((current, next) => current + ", " + next) });
303-
Assert.True(result.Resources.Where(r => r.Context != null).Count() == 2);
311+
Assert.AreEqual(2, result.Resources.Count(r => r.Context != null));
304312
}
305313

306314
[Test, RetryWithDelay]

CloudinaryDotNet.IntegrationTests/SearchApi/SearchApiTest.cs

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,12 +56,15 @@ public void InitSearchTests()
5656
{
5757
m_singleResourcePublicId = publicId;
5858
uploadParams.Context = new StringDictionary { { "some key", "some value" } };
59+
uploadParams.Moderation = "manual";
5960
}
6061
m_publicIdsSorted[i] = publicId;
6162
var r = m_cloudinary.Upload(uploadParams);
6263
m_assetIds.Add(publicId, r.AssetId);
6364
}
6465

66+
m_cloudinary.UpdateResource(m_singleResourcePublicId, ModerationStatus.Approved);
67+
6568
Array.Sort(m_publicIdsSorted);
6669
m_expressionPublicId = $"public_id: {m_publicIdsSorted[0]}";
6770
Thread.Sleep(IndexingWaitTime);
@@ -73,8 +76,18 @@ public void InitSearchTests()
7376
public void TestSearchByAssetId(string key)
7477
{
7578
var result = m_cloudinary.Search().Expression($"{key}{m_assetIds[m_singleResourcePublicId]}").Execute();
76-
Assert.AreEqual(1, result.Resources.Count());
79+
Assert.AreEqual(1, result.Resources.Count);
80+
Assert.AreEqual(m_singleResourcePublicId, result.Resources.First().PublicId);
81+
}
82+
83+
[Test, RetryWithDelay]
84+
public void TestSearchByModerationStatus()
85+
{
86+
var result = m_cloudinary.Search().Expression("moderation_status=approved").Execute();
87+
Assert.GreaterOrEqual(result.Resources.Count, 1);
7788
Assert.AreEqual(m_singleResourcePublicId, result.Resources.First().PublicId);
89+
Assert.AreEqual(result.Resources.First().ModerationKind, "manual");
90+
Assert.AreEqual(result.Resources.First().ModerationStatus, ModerationStatus.Approved);
7891
}
7992

8093
[Test, RetryWithDelay]

CloudinaryDotNet/Actions/AssetsManagement/GetResourceResult.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,18 @@ public Dictionary<string, string> Metadata
192192
[DataMember(Name = "moderation")]
193193
public List<Moderation> Moderation { get; set; }
194194

195+
/// <summary>
196+
/// Gets or sets type of moderation service: "manual", "webpurify", "aws_rek", or "metascan".
197+
/// </summary>
198+
[DataMember(Name = "moderation_kind")]
199+
public string ModerationKind { get; set; }
200+
201+
/// <summary>
202+
/// Gets or sets moderation status of asset.
203+
/// </summary>
204+
[DataMember(Name = "moderation_status")]
205+
public ModerationStatus? ModerationStatus { get; set; }
206+
195207
/// <summary>
196208
/// Gets or sets a key-value pairs of context associated with the resource.
197209
/// </summary>

CloudinaryDotNet/Actions/AssetsManagement/NestedTypes/Resource.cs

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -63,12 +63,6 @@ public string Created
6363
[DataMember(Name = "backup")]
6464
public bool? Backup { get; set; }
6565

66-
/// <summary>
67-
/// Gets or sets the current moderation status and details if any.
68-
/// </summary>
69-
[DataMember(Name = "moderation_status")]
70-
public ModerationStatus? ModerationStatus { get; set; }
71-
7266
/// <summary>
7367
/// Gets or sets the key-value pairs of general textual context metadata attached to the media asset.
7468
/// </summary>
@@ -86,4 +80,4 @@ public string Created
8680
[DataMember(Name = "access_mode")]
8781
public string AccessMode { get; set; }
8882
}
89-
}
83+
}

CloudinaryDotNet/Actions/AssetsUpload/RawUploadResult.cs

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,6 @@ public class RawUploadResult : UploadResult
2828
[DataMember(Name = "resource_type")]
2929
public string ResourceType { get; set; }
3030

31-
/// <summary>
32-
/// Gets or sets the array of data received from moderation service.
33-
/// </summary>
34-
[DataMember(Name = "moderation")]
35-
public List<Moderation> Moderation { get; set; }
36-
3731
/// <summary>
3832
/// Gets or sets date when the asset was uploaded.
3933
/// </summary>

CloudinaryDotNet/Actions/AssetsUpload/UploadResult.cs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
namespace CloudinaryDotNet.Actions
22
{
33
using System;
4+
using System.Collections.Generic;
45
using System.Runtime.Serialization;
56
using Newtonsoft.Json.Linq;
67

@@ -108,6 +109,24 @@ public long Length
108109
[DataMember(Name = "status")]
109110
public string Status { get; set; }
110111

112+
/// <summary>
113+
/// Gets or sets the array of data received from moderation service.
114+
/// </summary>
115+
[DataMember(Name = "moderation")]
116+
public List<Moderation> Moderation { get; set; }
117+
118+
/// <summary>
119+
/// Gets or sets type of moderation service: "manual", "webpurify", "aws_rek", or "metascan".
120+
/// </summary>
121+
[DataMember(Name = "moderation_kind")]
122+
public string ModerationKind { get; set; }
123+
124+
/// <summary>
125+
/// Gets or sets the current moderation status and details if any.
126+
/// </summary>
127+
[DataMember(Name = "moderation_status")]
128+
public ModerationStatus? ModerationStatus { get; set; }
129+
111130
/// <summary>
112131
/// Gets or sets upload hook execution status.
113132
/// </summary>

CloudinaryDotNet/Actions/Search/SearchResource.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,18 @@ public long Length
181181
[DataMember(Name = "status")]
182182
public string Status { get; set; }
183183

184+
/// <summary>
185+
/// Gets or sets type of moderation service: "manual", "webpurify", "aws_rek", or "metascan".
186+
/// </summary>
187+
[DataMember(Name = "moderation_kind")]
188+
public string ModerationKind { get; set; }
189+
190+
/// <summary>
191+
/// Gets or sets moderation status of asset.
192+
/// </summary>
193+
[DataMember(Name = "moderation_status")]
194+
public ModerationStatus? ModerationStatus { get; set; }
195+
184196
/// <summary>
185197
/// Gets or sets the authentication level currently set for the resource.
186198
/// Possible values: public, authenticated.

0 commit comments

Comments
 (0)