From a21954b6a4039f0e633b64615f9471ba3fa386a5 Mon Sep 17 00:00:00 2001 From: Dylan Nicholson Date: Sat, 2 Mar 2024 16:18:10 +1100 Subject: [PATCH] #1365 #1369 ensure LoadListDataAsStream* can handle location and image columns properly --- .../PnP.Core.Test/SharePoint/ListItemTests.cs | 25 ++++- ...ListDataAsStreamTest-0-00000.response.json | 1 + ...ListDataAsStreamTest-0-00001.response.json | 1 + ...ListDataAsStreamTest-0-00002.response.json | 1 + ...ListDataAsStreamTest-0-00003.response.json | 1 + ...ListDataAsStreamTest-0-00004.response.json | 1 + .../Core/Internal/FieldThumbnailValue.cs | 94 +++++++++++++++++++ .../Core/Internal/ListDataAsStreamHandler.cs | 7 +- .../Core/Public/IFieldThumbnailValue.cs | 26 +++++ .../Services/Core/JsonMappingHelper.cs | 15 +++ 10 files changed, 170 insertions(+), 2 deletions(-) create mode 100644 src/sdk/PnP.Core.Test/SharePoint/MockData/ListItemTests/ImageAndLocationFieldLoadListDataAsStreamTest-0-00000.response.json create mode 100644 src/sdk/PnP.Core.Test/SharePoint/MockData/ListItemTests/ImageAndLocationFieldLoadListDataAsStreamTest-0-00001.response.json create mode 100644 src/sdk/PnP.Core.Test/SharePoint/MockData/ListItemTests/ImageAndLocationFieldLoadListDataAsStreamTest-0-00002.response.json create mode 100644 src/sdk/PnP.Core.Test/SharePoint/MockData/ListItemTests/ImageAndLocationFieldLoadListDataAsStreamTest-0-00003.response.json create mode 100644 src/sdk/PnP.Core.Test/SharePoint/MockData/ListItemTests/ImageAndLocationFieldLoadListDataAsStreamTest-0-00004.response.json create mode 100644 src/sdk/PnP.Core/Model/SharePoint/Core/Internal/FieldThumbnailValue.cs create mode 100644 src/sdk/PnP.Core/Model/SharePoint/Core/Public/IFieldThumbnailValue.cs diff --git a/src/sdk/PnP.Core.Test/SharePoint/ListItemTests.cs b/src/sdk/PnP.Core.Test/SharePoint/ListItemTests.cs index c12afe1ead..31c010d4c6 100644 --- a/src/sdk/PnP.Core.Test/SharePoint/ListItemTests.cs +++ b/src/sdk/PnP.Core.Test/SharePoint/ListItemTests.cs @@ -1981,6 +1981,29 @@ public async Task RegularRestUpdateTest() } } + + [TestMethod] + public async Task ImageAndLocationFieldLoadListDataAsStreamTest() + { + //TestCommon.Instance.Mocking = false; + using (var context = await TestCommon.Instance.GetContextAsync(TestCommon.TestSite)) + { + var myList = await context.Web.Lists.GetByTitleAsync("WithImageAndLocation", p => p.Items, + p => p.Fields.QueryProperties(p => p.InternalName, p => p.FieldTypeKind, p => p.TypeAsString, p => p.Title)); + + await myList.LoadListDataAsStreamAsync(new RenderListDataOptions { }); + + var item = myList.Items.AsRequested().First(); + var lf = item.Values.TryGetValue("LinkFilename", out object lfval); + var loc = item.Values["TestLocation"] as IFieldLocationValue; + var image = item.Values["TestImage"] as IFieldThumbnailValue; + + Assert.AreEqual(image.FileName, "river.jpg"); + Assert.AreEqual(loc.Latitude, (double)-37.8099m); + } + } + + [TestMethod] public async Task RegularFieldCsomTest() { @@ -3732,7 +3755,7 @@ public async Task ListItemAsFilePropertiesTest() { //TestCommon.Instance.Mocking = false; (string parentLibraryName, _, string documentUrl) = await TestAssets.CreateTestDocumentAsync(0); - + try { using (var context = await TestCommon.Instance.GetContextAsync(TestCommon.TestSite, 1)) diff --git a/src/sdk/PnP.Core.Test/SharePoint/MockData/ListItemTests/ImageAndLocationFieldLoadListDataAsStreamTest-0-00000.response.json b/src/sdk/PnP.Core.Test/SharePoint/MockData/ListItemTests/ImageAndLocationFieldLoadListDataAsStreamTest-0-00000.response.json new file mode 100644 index 0000000000..61b25fb6ff --- /dev/null +++ b/src/sdk/PnP.Core.Test/SharePoint/MockData/ListItemTests/ImageAndLocationFieldLoadListDataAsStreamTest-0-00000.response.json @@ -0,0 +1 @@ +{"IsSuccessStatusCode":true,"StatusCode":200,"Headers":{"SPRequestGuid":"648708a1-300e-3000-032a-d8e289f2612c","SPClientServiceRequestDuration":"9","X-SharePointHealthScore":"1","X-SP-SERVERSTATE":"ReadOnly=0"},"Response":"{\u0022RegionalSettings\u0022:{\u0022TimeZone\u0022:{\u0022Description\u0022:\u0022(UTC-08:00) Pacific Time (US and Canada)\u0022,\u0022Id\u0022:13,\u0022Information\u0022:{\u0022Bias\u0022:480,\u0022DaylightBias\u0022:-60,\u0022StandardBias\u0022:0}},\u0022AdjustHijriDays\u0022:0,\u0022AlternateCalendarType\u0022:0,\u0022AM\u0022:\u0022AM\u0022,\u0022CalendarType\u0022:1,\u0022Collation\u0022:25,\u0022CollationLCID\u0022:2070,\u0022DateFormat\u0022:0,\u0022DateSeparator\u0022:\u0022/\u0022,\u0022DecimalSeparator\u0022:\u0022.\u0022,\u0022DigitGrouping\u0022:\u00223;0\u0022,\u0022FirstDayOfWeek\u0022:0,\u0022FirstWeekOfYear\u0022:0,\u0022IsEastAsia\u0022:false,\u0022IsRightToLeft\u0022:false,\u0022IsUIRightToLeft\u0022:false,\u0022ListSeparator\u0022:\u0022,\u0022,\u0022LocaleId\u0022:1033,\u0022NegativeSign\u0022:\u0022-\u0022,\u0022NegNumberMode\u0022:1,\u0022PM\u0022:\u0022PM\u0022,\u0022PositiveSign\u0022:\u0022\u0022,\u0022ShowWeeks\u0022:false,\u0022ThousandSeparator\u0022:\u0022,\u0022,\u0022Time24\u0022:false,\u0022TimeMarkerPosition\u0022:0,\u0022TimeSeparator\u0022:\u0022:\u0022,\u0022WorkDayEndHour\u0022:1020,\u0022WorkDays\u0022:62,\u0022WorkDayStartHour\u0022:480},\u0022Id\u0022:\u00224443e8fa-ce60-4ce4-ab87-d0f378185a1b\u0022,\u0022Url\u0022:\u0022https://hsftrms.sharepoint.com/sites/DNTest\u0022}"} \ No newline at end of file diff --git a/src/sdk/PnP.Core.Test/SharePoint/MockData/ListItemTests/ImageAndLocationFieldLoadListDataAsStreamTest-0-00001.response.json b/src/sdk/PnP.Core.Test/SharePoint/MockData/ListItemTests/ImageAndLocationFieldLoadListDataAsStreamTest-0-00001.response.json new file mode 100644 index 0000000000..f2ee9e5a3f --- /dev/null +++ b/src/sdk/PnP.Core.Test/SharePoint/MockData/ListItemTests/ImageAndLocationFieldLoadListDataAsStreamTest-0-00001.response.json @@ -0,0 +1 @@ +{"IsSuccessStatusCode":true,"StatusCode":200,"Headers":{"SPRequestGuid":"648708a1-1058-3000-032a-d3cb1d24c161","SPClientServiceRequestDuration":"11","X-SharePointHealthScore":"0","X-SP-SERVERSTATE":"ReadOnly=0"},"Response":"{\u0022GroupId\u0022:\u00224a873bac-9841-4a22-ad69-ee47f25d01ca\u0022,\u0022Id\u0022:\u0022d54a8d16-b96c-492c-a4cb-7a1906c38058\u0022}"} \ No newline at end of file diff --git a/src/sdk/PnP.Core.Test/SharePoint/MockData/ListItemTests/ImageAndLocationFieldLoadListDataAsStreamTest-0-00002.response.json b/src/sdk/PnP.Core.Test/SharePoint/MockData/ListItemTests/ImageAndLocationFieldLoadListDataAsStreamTest-0-00002.response.json new file mode 100644 index 0000000000..f6c5a67061 --- /dev/null +++ b/src/sdk/PnP.Core.Test/SharePoint/MockData/ListItemTests/ImageAndLocationFieldLoadListDataAsStreamTest-0-00002.response.json @@ -0,0 +1 @@ +{"IsSuccessStatusCode":true,"StatusCode":200,"Headers":{"SPRequestGuid":"648708a1-d072-3000-032a-db0ada4c293b","SPClientServiceRequestDuration":"266","X-SharePointHealthScore":"3","X-SP-SERVERSTATE":"ReadOnly=0"},"Response":"{\u0022Fields\u0022:[{\u0022Id\u0022:\u002203e45e84-1992-4d42-9116-26f756012634\u0022,\u0022InternalName\u0022:\u0022ContentTypeId\u0022,\u0022Title\u0022:\u0022Content Type ID\u0022,\u0022FieldTypeKind\u0022:25,\u0022TypeAsString\u0022:\u0022ContentTypeId\u0022},{\u0022Id\u0022:\u002234ad21eb-75bd-4544-8c73-0e08330291fe\u0022,\u0022InternalName\u0022:\u0022_ModerationComments\u0022,\u0022Title\u0022:\u0022Approver Comments\u0022,\u0022FieldTypeKind\u0022:3,\u0022TypeAsString\u0022:\u0022Note\u0022},{\u0022Id\u0022:\u00228553196d-ec8d-4564-9861-3dbe931050c8\u0022,\u0022InternalName\u0022:\u0022FileLeafRef\u0022,\u0022Title\u0022:\u0022Name\u0022,\u0022FieldTypeKind\u0022:18,\u0022TypeAsString\u0022:\u0022File\u0022},{\u0022Id\u0022:\u0022822c78e3-1ea9-4943-b449-57863ad33ca9\u0022,\u0022InternalName\u0022:\u0022Modified_x0020_By\u0022,\u0022Title\u0022:\u0022Document Modified By\u0022,\u0022FieldTypeKind\u0022:2,\u0022TypeAsString\u0022:\u0022Text\u0022},{\u0022Id\u0022:\u00224dd7e525-8d6b-4cb4-9d3e-44ee25f973eb\u0022,\u0022InternalName\u0022:\u0022Created_x0020_By\u0022,\u0022Title\u0022:\u0022Document Created By\u0022,\u0022FieldTypeKind\u0022:2,\u0022TypeAsString\u0022:\u0022Text\u0022},{\u0022Id\u0022:\u002239360f11-34cf-4356-9945-25c44e68dade\u0022,\u0022InternalName\u0022:\u0022File_x0020_Type\u0022,\u0022Title\u0022:\u0022File Type\u0022,\u0022FieldTypeKind\u0022:2,\u0022TypeAsString\u0022:\u0022Text\u0022},{\u0022Id\u0022:\u00220c5e0085-eb30-494b-9cdd-ece1d3c649a2\u0022,\u0022InternalName\u0022:\u0022HTML_x0020_File_x0020_Type\u0022,\u0022Title\u0022:\u0022HTML File Type\u0022,\u0022FieldTypeKind\u0022:2,\u0022TypeAsString\u0022:\u0022Text\u0022},{\u0022Id\u0022:\u0022c63a459d-54ba-4ab7-933a-dcf1c6fadec2\u0022,\u0022InternalName\u0022:\u0022_SourceUrl\u0022,\u0022Title\u0022:\u0022Source URL\u0022,\u0022FieldTypeKind\u0022:2,\u0022TypeAsString\u0022:\u0022Text\u0022},{\u0022Id\u0022:\u0022034998e9-bf1c-4288-bbbd-00eacfc64410\u0022,\u0022InternalName\u0022:\u0022_SharedFileIndex\u0022,\u0022Title\u0022:\u0022Shared File Index\u0022,\u0022FieldTypeKind\u0022:2,\u0022TypeAsString\u0022:\u0022Text\u0022},{\u0022Id\u0022:\u00223bdab9ac-9e5d-44d4-bde9-13b37e170618\u0022,\u0022InternalName\u0022:\u0022_ColorHex\u0022,\u0022Title\u0022:\u0022Color\u0022,\u0022FieldTypeKind\u0022:2,\u0022TypeAsString\u0022:\u0022Text\u0022},{\u0022Id\u0022:\u002276d13cd2-1bae-45a5-8b74-545b87b65037\u0022,\u0022InternalName\u0022:\u0022_ColorTag\u0022,\u0022Title\u0022:\u0022Color Tag\u0022,\u0022FieldTypeKind\u0022:2,\u0022TypeAsString\u0022:\u0022Text\u0022},{\u0022Id\u0022:\u0022d8a77d76-536b-45d2-8b9b-e4e9b00cf3dc\u0022,\u0022InternalName\u0022:\u0022_Emoji\u0022,\u0022Title\u0022:\u0022Emoji\u0022,\u0022FieldTypeKind\u0022:2,\u0022TypeAsString\u0022:\u0022Text\u0022},{\u0022Id\u0022:\u0022dca4e5a0-0887-4480-8f7b-efcf76b76413\u0022,\u0022InternalName\u0022:\u0022MediaGeneratedMetadata\u0022,\u0022Title\u0022:\u0022Media Generated Metadata\u0022,\u0022FieldTypeKind\u0022:2,\u0022TypeAsString\u0022:\u0022Text\u0022},{\u0022Id\u0022:\u00220f17d094-f613-4d33-8031-7b22650aad78\u0022,\u0022InternalName\u0022:\u0022MediaUserMetadata\u0022,\u0022Title\u0022:\u0022Media User Metadata\u0022,\u0022FieldTypeKind\u0022:2,\u0022TypeAsString\u0022:\u0022Text\u0022},{\u0022Id\u0022:\u00223a6b296c-3f50-445c-a13f-9c679ea9dda3\u0022,\u0022InternalName\u0022:\u0022ComplianceAssetId\u0022,\u0022Title\u0022:\u0022Compliance Asset Id\u0022,\u0022FieldTypeKind\u0022:2,\u0022TypeAsString\u0022:\u0022Text\u0022},{\u0022Id\u0022:\u0022fa564e0f-0c70-4ab9-b863-0177e6ddd247\u0022,\u0022InternalName\u0022:\u0022Title\u0022,\u0022Title\u0022:\u0022Title\u0022,\u0022FieldTypeKind\u0022:2,\u0022TypeAsString\u0022:\u0022Text\u0022},{\u0022Id\u0022:\u00224b1bf6c6-4f39-45ac-acd5-16fe7a214e5e\u0022,\u0022InternalName\u0022:\u0022TemplateUrl\u0022,\u0022Title\u0022:\u0022Template Link\u0022,\u0022FieldTypeKind\u0022:2,\u0022TypeAsString\u0022:\u0022Text\u0022},{\u0022Id\u0022:\u0022cd1ecb9f-dd4e-4f29-ab9e-e9ff40048d64\u0022,\u0022InternalName\u0022:\u0022xd_ProgID\u0022,\u0022Title\u0022:\u0022HTML File Link\u0022,\u0022FieldTypeKind\u0022:2,\u0022TypeAsString\u0022:\u0022Text\u0022},{\u0022Id\u0022:\u0022fbf29b2d-cae5-49aa-8e0a-29955b540122\u0022,\u0022InternalName\u0022:\u0022xd_Signature\u0022,\u0022Title\u0022:\u0022Is Signed\u0022,\u0022FieldTypeKind\u0022:8,\u0022TypeAsString\u0022:\u0022Boolean\u0022},{\u0022Id\u0022:\u00229e44c6c3-4793-4fde-8ed9-c1cfb442e83d\u0022,\u0022InternalName\u0022:\u0022_EffectiveIpLabelDisplayName\u0022,\u0022Title\u0022:\u0022Effective Sensitivity\u0022,\u0022FieldTypeKind\u0022:12,\u0022TypeAsString\u0022:\u0022Computed\u0022},{\u0022Id\u0022:\u002247b1b86f-9f8a-4dbe-a75e-ca5d9b0f566c\u0022,\u0022InternalName\u0022:\u0022_ShortcutUrl\u0022,\u0022Title\u0022:\u0022Shortcut URL\u0022,\u0022FieldTypeKind\u0022:11,\u0022TypeAsString\u0022:\u0022URL\u0022},{\u0022Id\u0022:\u00222662ad77-2410-4938-b01c-e5e43321bad4\u0022,\u0022InternalName\u0022:\u0022_ShortcutSiteId\u0022,\u0022Title\u0022:\u0022Shortcut Site Id\u0022,\u0022FieldTypeKind\u0022:14,\u0022TypeAsString\u0022:\u0022Guid\u0022},{\u0022Id\u0022:\u0022e2a3861f-c216-47d7-820f-7cb638862ab2\u0022,\u0022InternalName\u0022:\u0022_ShortcutWebId\u0022,\u0022Title\u0022:\u0022Shortcut Web Id\u0022,\u0022FieldTypeKind\u0022:14,\u0022TypeAsString\u0022:\u0022Guid\u0022},{\u0022Id\u0022:\u0022e8fea999-553d-4f45-be52-d941627e9fe5\u0022,\u0022InternalName\u0022:\u0022_ShortcutUniqueId\u0022,\u0022Title\u0022:\u0022Shortcut Unique Id\u0022,\u0022FieldTypeKind\u0022:14,\u0022TypeAsString\u0022:\u0022Guid\u0022},{\u0022Id\u0022:\u0022cb19284a-cde7-4570-a980-1dab8bd74470\u0022,\u0022InternalName\u0022:\u0022_ExtendedDescription\u0022,\u0022Title\u0022:\u0022Description\u0022,\u0022FieldTypeKind\u0022:3,\u0022TypeAsString\u0022:\u0022Note\u0022},{\u0022Id\u0022:\u002208d89a66-4634-42b8-9d5a-0c27395a48b3\u0022,\u0022InternalName\u0022:\u0022TriggerFlowInfo\u0022,\u0022Title\u0022:\u0022Trigger Flow Info\u0022,\u0022FieldTypeKind\u0022:2,\u0022TypeAsString\u0022:\u0022Text\u0022},{\u0022Id\u0022:\u002238c73f24-6c0b-4638-943c-a2f2b3e1c989\u0022,\u0022InternalName\u0022:\u0022TestImage\u0022,\u0022Title\u0022:\u0022TestImage\u0022,\u0022FieldTypeKind\u0022:34,\u0022TypeAsString\u0022:\u0022Thumbnail\u0022},{\u0022Id\u0022:\u0022352aa00f-6081-4436-8910-4b89b44d68a5\u0022,\u0022InternalName\u0022:\u0022TestLocation\u0022,\u0022Title\u0022:\u0022TestLocation\u0022,\u0022FieldTypeKind\u0022:33,\u0022TypeAsString\u0022:\u0022Location\u0022},{\u0022Id\u0022:\u0022a73a4aff-15ba-46f1-81a2-79026502b649\u0022,\u0022InternalName\u0022:\u0022CountryOrRegion\u0022,\u0022Title\u0022:\u0022TestLocation: Country/Region\u0022,\u0022FieldTypeKind\u0022:2,\u0022TypeAsString\u0022:\u0022Text\u0022},{\u0022Id\u0022:\u002278daac48-cdf6-4ba3-a7d9-4d32df4dc2d8\u0022,\u0022InternalName\u0022:\u0022State\u0022,\u0022Title\u0022:\u0022TestLocation: State\u0022,\u0022FieldTypeKind\u0022:2,\u0022TypeAsString\u0022:\u0022Text\u0022},{\u0022Id\u0022:\u0022abd0162f-82b4-401a-a728-83ae4d269fae\u0022,\u0022InternalName\u0022:\u0022City\u0022,\u0022Title\u0022:\u0022TestLocation: City\u0022,\u0022FieldTypeKind\u0022:2,\u0022TypeAsString\u0022:\u0022Text\u0022},{\u0022Id\u0022:\u0022836a7fe0-a046-44ff-a3e3-40007eec225e\u0022,\u0022InternalName\u0022:\u0022PostalCode\u0022,\u0022Title\u0022:\u0022TestLocation: Postal Code\u0022,\u0022FieldTypeKind\u0022:2,\u0022TypeAsString\u0022:\u0022Text\u0022},{\u0022Id\u0022:\u00228e1b1e30-7058-455e-93b2-0a38914af5ef\u0022,\u0022InternalName\u0022:\u0022Street\u0022,\u0022Title\u0022:\u0022TestLocation: Street\u0022,\u0022FieldTypeKind\u0022:2,\u0022TypeAsString\u0022:\u0022Text\u0022},{\u0022Id\u0022:\u0022398a26c0-2fd6-4113-82a2-1caec1fd035a\u0022,\u0022InternalName\u0022:\u0022GeoLoc\u0022,\u0022Title\u0022:\u0022TestLocation: Coordinates\u0022,\u0022FieldTypeKind\u0022:31,\u0022TypeAsString\u0022:\u0022Geolocation\u0022},{\u0022Id\u0022:\u0022e083a08c-d60a-40f2-9112-be070a881f07\u0022,\u0022InternalName\u0022:\u0022DispName\u0022,\u0022Title\u0022:\u0022TestLocation: Name\u0022,\u0022FieldTypeKind\u0022:2,\u0022TypeAsString\u0022:\u0022Text\u0022},{\u0022Id\u0022:\u0022554c48f6-896d-47ae-a672-aca80d828e4b\u0022,\u0022InternalName\u0022:\u0022SecondLocation\u0022,\u0022Title\u0022:\u0022SecondLocation\u0022,\u0022FieldTypeKind\u0022:33,\u0022TypeAsString\u0022:\u0022Location\u0022},{\u0022Id\u0022:\u0022c4e6c1aa-7737-4c1a-8006-705218d1fa4a\u0022,\u0022InternalName\u0022:\u0022CountryOrRegion0\u0022,\u0022Title\u0022:\u0022SecondLocation: Country/Region\u0022,\u0022FieldTypeKind\u0022:2,\u0022TypeAsString\u0022:\u0022Text\u0022},{\u0022Id\u0022:\u002239b6cc25-ec95-4e09-a6c2-94906d1c81d4\u0022,\u0022InternalName\u0022:\u0022State0\u0022,\u0022Title\u0022:\u0022SecondLocation: State\u0022,\u0022FieldTypeKind\u0022:2,\u0022TypeAsString\u0022:\u0022Text\u0022},{\u0022Id\u0022:\u0022f7134f59-3ae6-4530-8f02-d3aed6185694\u0022,\u0022InternalName\u0022:\u0022City0\u0022,\u0022Title\u0022:\u0022SecondLocation: City\u0022,\u0022FieldTypeKind\u0022:2,\u0022TypeAsString\u0022:\u0022Text\u0022},{\u0022Id\u0022:\u0022a2e56231-9268-430a-b197-f796843be8ae\u0022,\u0022InternalName\u0022:\u0022PostalCode0\u0022,\u0022Title\u0022:\u0022SecondLocation: Postal Code\u0022,\u0022FieldTypeKind\u0022:2,\u0022TypeAsString\u0022:\u0022Text\u0022},{\u0022Id\u0022:\u0022d9213d07-1b28-438c-b899-5d11e09fe646\u0022,\u0022InternalName\u0022:\u0022Street0\u0022,\u0022Title\u0022:\u0022SecondLocation: Street\u0022,\u0022FieldTypeKind\u0022:2,\u0022TypeAsString\u0022:\u0022Text\u0022},{\u0022Id\u0022:\u00224fb4ef0f-de24-4e8e-a549-a19da4744b73\u0022,\u0022InternalName\u0022:\u0022GeoLoc0\u0022,\u0022Title\u0022:\u0022SecondLocation: Coordinates\u0022,\u0022FieldTypeKind\u0022:31,\u0022TypeAsString\u0022:\u0022Geolocation\u0022},{\u0022Id\u0022:\u00227cc3521e-cb50-4313-985f-2a9b9d0098e0\u0022,\u0022InternalName\u0022:\u0022DispName0\u0022,\u0022Title\u0022:\u0022SecondLocation: Name\u0022,\u0022FieldTypeKind\u0022:2,\u0022TypeAsString\u0022:\u0022Text\u0022},{\u0022Id\u0022:\u00221d22ea11-1e32-424e-89ab-9fedbadb6ce1\u0022,\u0022InternalName\u0022:\u0022ID\u0022,\u0022Title\u0022:\u0022ID\u0022,\u0022FieldTypeKind\u0022:5,\u0022TypeAsString\u0022:\u0022Counter\u0022},{\u0022Id\u0022:\u0022c042a256-787d-4a6f-8a8a-cf6ab767f12d\u0022,\u0022InternalName\u0022:\u0022ContentType\u0022,\u0022Title\u0022:\u0022Content Type\u0022,\u0022FieldTypeKind\u0022:12,\u0022TypeAsString\u0022:\u0022Computed\u0022},{\u0022Id\u0022:\u00228c06beca-0777-48f7-91c7-6da68bc07b69\u0022,\u0022InternalName\u0022:\u0022Created\u0022,\u0022Title\u0022:\u0022Created\u0022,\u0022FieldTypeKind\u0022:4,\u0022TypeAsString\u0022:\u0022DateTime\u0022},{\u0022Id\u0022:\u00221df5e554-ec7e-46a6-901d-d85a3881cb18\u0022,\u0022InternalName\u0022:\u0022Author\u0022,\u0022Title\u0022:\u0022Created By\u0022,\u0022FieldTypeKind\u0022:20,\u0022TypeAsString\u0022:\u0022User\u0022},{\u0022Id\u0022:\u002228cf69c5-fa48-462a-b5cd-27b6f9d2bd5f\u0022,\u0022InternalName\u0022:\u0022Modified\u0022,\u0022Title\u0022:\u0022Modified\u0022,\u0022FieldTypeKind\u0022:4,\u0022TypeAsString\u0022:\u0022DateTime\u0022},{\u0022Id\u0022:\u0022d31655d1-1d5b-4511-95a1-7a09e9b75bf2\u0022,\u0022InternalName\u0022:\u0022Editor\u0022,\u0022Title\u0022:\u0022Modified By\u0022,\u0022FieldTypeKind\u0022:20,\u0022TypeAsString\u0022:\u0022User\u0022},{\u0022Id\u0022:\u002226d0756c-986a-48a7-af35-bf18ab85ff4a\u0022,\u0022InternalName\u0022:\u0022_HasCopyDestinations\u0022,\u0022Title\u0022:\u0022Has Copy Destinations\u0022,\u0022FieldTypeKind\u0022:8,\u0022TypeAsString\u0022:\u0022Boolean\u0022},{\u0022Id\u0022:\u00226b4e226d-3d88-4a36-808d-a129bf52bccf\u0022,\u0022InternalName\u0022:\u0022_CopySource\u0022,\u0022Title\u0022:\u0022Copy Source\u0022,\u0022FieldTypeKind\u0022:2,\u0022TypeAsString\u0022:\u0022Text\u0022},{\u0022Id\u0022:\u0022fdc3b2ed-5bf2-4835-a4bc-b885f3396a61\u0022,\u0022InternalName\u0022:\u0022_ModerationStatus\u0022,\u0022Title\u0022:\u0022Approval Status\u0022,\u0022FieldTypeKind\u0022:23,\u0022TypeAsString\u0022:\u0022ModStat\u0022},{\u0022Id\u0022:\u002294f89715-e097-4e8b-ba79-ea02aa8b7adb\u0022,\u0022InternalName\u0022:\u0022FileRef\u0022,\u0022Title\u0022:\u0022URL Path\u0022,\u0022FieldTypeKind\u0022:7,\u0022TypeAsString\u0022:\u0022Lookup\u0022},{\u0022Id\u0022:\u002256605df6-8fa1-47e4-a04c-5b384d59609f\u0022,\u0022InternalName\u0022:\u0022FileDirRef\u0022,\u0022Title\u0022:\u0022Path\u0022,\u0022FieldTypeKind\u0022:7,\u0022TypeAsString\u0022:\u0022Lookup\u0022},{\u0022Id\u0022:\u0022173f76c8-aebd-446a-9bc9-769a2bd2c18f\u0022,\u0022InternalName\u0022:\u0022Last_x0020_Modified\u0022,\u0022Title\u0022:\u0022Modified\u0022,\u0022FieldTypeKind\u0022:7,\u0022TypeAsString\u0022:\u0022Lookup\u0022},{\u0022Id\u0022:\u0022998b5cff-4a35-47a7-92f3-3914aa6aa4a2\u0022,\u0022InternalName\u0022:\u0022Created_x0020_Date\u0022,\u0022Title\u0022:\u0022Created\u0022,\u0022FieldTypeKind\u0022:7,\u0022TypeAsString\u0022:\u0022Lookup\u0022},{\u0022Id\u0022:\u00228fca95c0-9b7d-456f-8dae-b41ee2728b85\u0022,\u0022InternalName\u0022:\u0022File_x0020_Size\u0022,\u0022Title\u0022:\u0022File Size\u0022,\u0022FieldTypeKind\u0022:7,\u0022TypeAsString\u0022:\u0022Lookup\u0022},{\u0022Id\u0022:\u002230bb605f-5bae-48fe-b4e3-1f81d9772af9\u0022,\u0022InternalName\u0022:\u0022FSObjType\u0022,\u0022Title\u0022:\u0022Item Type\u0022,\u0022FieldTypeKind\u0022:7,\u0022TypeAsString\u0022:\u0022Lookup\u0022},{\u0022Id\u0022:\u0022423874f8-c300-4bfb-b7a1-42e2159e3b19\u0022,\u0022InternalName\u0022:\u0022SortBehavior\u0022,\u0022Title\u0022:\u0022Sort Type\u0022,\u0022FieldTypeKind\u0022:7,\u0022TypeAsString\u0022:\u0022Lookup\u0022},{\u0022Id\u0022:\u0022ba3c27ee-4791-4867-8821-ff99000bac98\u0022,\u0022InternalName\u0022:\u0022PermMask\u0022,\u0022Title\u0022:\u0022Effective Permissions Mask\u0022,\u0022FieldTypeKind\u0022:12,\u0022TypeAsString\u0022:\u0022Computed\u0022},{\u0022Id\u0022:\u0022dcc67ebd-247f-4bee-8626-85ff6f69fbb6\u0022,\u0022InternalName\u0022:\u0022PrincipalCount\u0022,\u0022Title\u0022:\u0022Principal Count\u0022,\u0022FieldTypeKind\u0022:12,\u0022TypeAsString\u0022:\u0022Computed\u0022},{\u0022Id\u0022:\u0022a7b731a3-1df1-4d74-a5c6-e2efba617ae2\u0022,\u0022InternalName\u0022:\u0022CheckedOutUserId\u0022,\u0022Title\u0022:\u0022ID of the User who has the item Checked Out\u0022,\u0022FieldTypeKind\u0022:7,\u0022TypeAsString\u0022:\u0022Lookup\u0022},{\u0022Id\u0022:\u0022cfaabd0f-bdbd-4bc2-b375-1e779e2cad08\u0022,\u0022InternalName\u0022:\u0022IsCheckedoutToLocal\u0022,\u0022Title\u0022:\u0022Is Checked out to local\u0022,\u0022FieldTypeKind\u0022:7,\u0022TypeAsString\u0022:\u0022Lookup\u0022},{\u0022Id\u0022:\u00223881510a-4e4a-4ee8-b102-8ee8e2d0dd4b\u0022,\u0022InternalName\u0022:\u0022CheckoutUser\u0022,\u0022Title\u0022:\u0022Checked Out To\u0022,\u0022FieldTypeKind\u0022:20,\u0022TypeAsString\u0022:\u0022User\u0022},{\u0022Id\u0022:\u00224b7403de-8d94-43e8-9f0f-137a3e298126\u0022,\u0022InternalName\u0022:\u0022UniqueId\u0022,\u0022Title\u0022:\u0022Unique Id\u0022,\u0022FieldTypeKind\u0022:7,\u0022TypeAsString\u0022:\u0022Lookup\u0022},{\u0022Id\u0022:\u00223b653cee-df6b-4cd4-b66d-ad5ce875b25e\u0022,\u0022InternalName\u0022:\u0022ParentUniqueId\u0022,\u0022Title\u0022:\u0022Document Parent Identifier\u0022,\u0022FieldTypeKind\u0022:7,\u0022TypeAsString\u0022:\u0022Lookup\u0022},{\u0022Id\u0022:\u00226d2c4fde-3605-428e-a236-ce5f3dc2b4d4\u0022,\u0022InternalName\u0022:\u0022SyncClientId\u0022,\u0022Title\u0022:\u0022Client Id\u0022,\u0022FieldTypeKind\u0022:7,\u0022TypeAsString\u0022:\u0022Lookup\u0022},{\u0022Id\u0022:\u0022c5c4b81c-f1d9-4b43-a6a2-090df32ebb68\u0022,\u0022InternalName\u0022:\u0022ProgId\u0022,\u0022Title\u0022:\u0022ProgId\u0022,\u0022FieldTypeKind\u0022:7,\u0022TypeAsString\u0022:\u0022Lookup\u0022},{\u0022Id\u0022:\u0022dddd2420-b270-4735-93b5-92b713d0944d\u0022,\u0022InternalName\u0022:\u0022ScopeId\u0022,\u0022Title\u0022:\u0022ScopeId\u0022,\u0022FieldTypeKind\u0022:7,\u0022TypeAsString\u0022:\u0022Lookup\u0022},{\u0022Id\u0022:\u00224a389cb9-54dd-4287-a71a-90ff362028bc\u0022,\u0022InternalName\u0022:\u0022VirusStatus\u0022,\u0022Title\u0022:\u0022Virus Status\u0022,\u0022FieldTypeKind\u0022:7,\u0022TypeAsString\u0022:\u0022Lookup\u0022},{\u0022Id\u0022:\u00229d4adc35-7cc8-498c-8424-ee5fd541e43a\u0022,\u0022InternalName\u0022:\u0022CheckedOutTitle\u0022,\u0022Title\u0022:\u0022Checked Out To\u0022,\u0022FieldTypeKind\u0022:7,\u0022TypeAsString\u0022:\u0022Lookup\u0022},{\u0022Id\u0022:\u002258014f77-5463-437b-ab67-eec79532da67\u0022,\u0022InternalName\u0022:\u0022_CheckinComment\u0022,\u0022Title\u0022:\u0022Check In Comment\u0022,\u0022FieldTypeKind\u0022:7,\u0022TypeAsString\u0022:\u0022Lookup\u0022},{\u0022Id\u0022:\u0022e2a15dfd-6ab8-4aec-91ab-02f6b64045b0\u0022,\u0022InternalName\u0022:\u0022LinkCheckedOutTitle\u0022,\u0022Title\u0022:\u0022Checked Out To\u0022,\u0022FieldTypeKind\u0022:12,\u0022TypeAsString\u0022:\u0022Computed\u0022},{\u0022Id\u0022:\u00223c6303be-e21f-4366-80d7-d6d0a3b22c7a\u0022,\u0022InternalName\u0022:\u0022_EditMenuTableStart\u0022,\u0022Title\u0022:\u0022Edit Menu Table Start\u0022,\u0022FieldTypeKind\u0022:12,\u0022TypeAsString\u0022:\u0022Computed\u0022},{\u0022Id\u0022:\u00221344423c-c7f9-4134-88e4-ad842e2d723c\u0022,\u0022InternalName\u0022:\u0022_EditMenuTableStart2\u0022,\u0022Title\u0022:\u0022Edit Menu Table Start\u0022,\u0022FieldTypeKind\u0022:12,\u0022TypeAsString\u0022:\u0022Computed\u0022},{\u0022Id\u0022:\u00222ea78cef-1bf9-4019-960a-02c41636cb47\u0022,\u0022InternalName\u0022:\u0022_EditMenuTableEnd\u0022,\u0022Title\u0022:\u0022Edit Menu Table End\u0022,\u0022FieldTypeKind\u0022:12,\u0022TypeAsString\u0022:\u0022Computed\u0022},{\u0022Id\u0022:\u00229d30f126-ba48-446b-b8f9-83745f322ebe\u0022,\u0022InternalName\u0022:\u0022LinkFilenameNoMenu\u0022,\u0022Title\u0022:\u0022Name\u0022,\u0022FieldTypeKind\u0022:12,\u0022TypeAsString\u0022:\u0022Computed\u0022},{\u0022Id\u0022:\u00225cc6dc79-3710-4374-b433-61cb4a686c12\u0022,\u0022InternalName\u0022:\u0022LinkFilename\u0022,\u0022Title\u0022:\u0022Name\u0022,\u0022FieldTypeKind\u0022:12,\u0022TypeAsString\u0022:\u0022Computed\u0022},{\u0022Id\u0022:\u0022224ba411-da77-4050-b0eb-62d422f13d3e\u0022,\u0022InternalName\u0022:\u0022LinkFilename2\u0022,\u0022Title\u0022:\u0022Name\u0022,\u0022FieldTypeKind\u0022:12,\u0022TypeAsString\u0022:\u0022Computed\u0022},{\u0022Id\u0022:\u0022081c6e4c-5c14-4f20-b23e-1a71ceb6a67c\u0022,\u0022InternalName\u0022:\u0022DocIcon\u0022,\u0022Title\u0022:\u0022Type\u0022,\u0022FieldTypeKind\u0022:12,\u0022TypeAsString\u0022:\u0022Computed\u0022},{\u0022Id\u0022:\u0022105f76ce-724a-4bba-aece-f81f2fce58f5\u0022,\u0022InternalName\u0022:\u0022ServerUrl\u0022,\u0022Title\u0022:\u0022Server Relative URL\u0022,\u0022FieldTypeKind\u0022:12,\u0022TypeAsString\u0022:\u0022Computed\u0022},{\u0022Id\u0022:\u00227177cfc7-f399-4d4d-905d-37dd51bc90bf\u0022,\u0022InternalName\u0022:\u0022EncodedAbsUrl\u0022,\u0022Title\u0022:\u0022Encoded Absolute URL\u0022,\u0022FieldTypeKind\u0022:12,\u0022TypeAsString\u0022:\u0022Computed\u0022},{\u0022Id\u0022:\u00227615464b-559e-4302-b8e2-8f440b913101\u0022,\u0022InternalName\u0022:\u0022BaseName\u0022,\u0022Title\u0022:\u0022Name\u0022,\u0022FieldTypeKind\u0022:12,\u0022TypeAsString\u0022:\u0022Computed\u0022},{\u0022Id\u0022:\u002278a07ba4-bda8-4357-9e0f-580d64487583\u0022,\u0022InternalName\u0022:\u0022FileSizeDisplay\u0022,\u0022Title\u0022:\u0022File Size\u0022,\u0022FieldTypeKind\u0022:12,\u0022TypeAsString\u0022:\u0022Computed\u0022},{\u0022Id\u0022:\u0022687c7f94-686a-42d3-9b67-2782eac4b4f8\u0022,\u0022InternalName\u0022:\u0022MetaInfo\u0022,\u0022Title\u0022:\u0022Property Bag\u0022,\u0022FieldTypeKind\u0022:7,\u0022TypeAsString\u0022:\u0022Lookup\u0022},{\u0022Id\u0022:\u002243bdd51b-3c5b-4e78-90a8-fb2087f71e70\u0022,\u0022InternalName\u0022:\u0022_Level\u0022,\u0022Title\u0022:\u0022Level\u0022,\u0022FieldTypeKind\u0022:1,\u0022TypeAsString\u0022:\u0022Integer\u0022},{\u0022Id\u0022:\u0022c101c3e7-122d-4d4d-bc34-58e94a38c816\u0022,\u0022InternalName\u0022:\u0022_IsCurrentVersion\u0022,\u0022Title\u0022:\u0022Is Current Version\u0022,\u0022FieldTypeKind\u0022:8,\u0022TypeAsString\u0022:\u0022Boolean\u0022},{\u0022Id\u0022:\u0022b824e17e-a1b3-426e-aecf-f0184d900485\u0022,\u0022InternalName\u0022:\u0022ItemChildCount\u0022,\u0022Title\u0022:\u0022Item Child Count\u0022,\u0022FieldTypeKind\u0022:7,\u0022TypeAsString\u0022:\u0022Lookup\u0022},{\u0022Id\u0022:\u0022960ff01f-2b6d-4f1b-9c3f-e19ad8927341\u0022,\u0022InternalName\u0022:\u0022FolderChildCount\u0022,\u0022Title\u0022:\u0022Folder Child Count\u0022,\u0022FieldTypeKind\u0022:7,\u0022TypeAsString\u0022:\u0022Lookup\u0022},{\u0022Id\u0022:\u0022786099e5-d20a-4232-86e5-cfc3d6face96\u0022,\u0022InternalName\u0022:\u0022Restricted\u0022,\u0022Title\u0022:\u0022Restricted\u0022,\u0022FieldTypeKind\u0022:7,\u0022TypeAsString\u0022:\u0022Lookup\u0022},{\u0022Id\u0022:\u002214ee99cd-bed9-474a-bf99-8f753fbad6b4\u0022,\u0022InternalName\u0022:\u0022OriginatorId\u0022,\u0022Title\u0022:\u0022Originator Id\u0022,\u0022FieldTypeKind\u0022:7,\u0022TypeAsString\u0022:\u0022Lookup\u0022},{\u0022Id\u0022:\u00220b16648a-daff-47d4-9fda-c6038b75ed27\u0022,\u0022InternalName\u0022:\u0022NoExecute\u0022,\u0022Title\u0022:\u0022NoExecute\u0022,\u0022FieldTypeKind\u0022:7,\u0022TypeAsString\u0022:\u0022Lookup\u0022},{\u0022Id\u0022:\u0022d48268e5-c65d-486c-bbf1-874cf986d7d3\u0022,\u0022InternalName\u0022:\u0022ContentVersion\u0022,\u0022Title\u0022:\u0022Content Version\u0022,\u0022FieldTypeKind\u0022:7,\u0022TypeAsString\u0022:\u0022Lookup\u0022},{\u0022Id\u0022:\u0022ccc1037f-f65e-434a-868e-8c98af31fe29\u0022,\u0022InternalName\u0022:\u0022_ComplianceFlags\u0022,\u0022Title\u0022:\u0022Label setting\u0022,\u0022FieldTypeKind\u0022:7,\u0022TypeAsString\u0022:\u0022Lookup\u0022},{\u0022Id\u0022:\u0022d4b6480a-4bed-4094-9a52-30181ea38f1d\u0022,\u0022InternalName\u0022:\u0022_ComplianceTag\u0022,\u0022Title\u0022:\u0022Retention label\u0022,\u0022FieldTypeKind\u0022:7,\u0022TypeAsString\u0022:\u0022Lookup\u0022},{\u0022Id\u0022:\u002292be610e-ddbb-49f4-b3b1-5c2bc768df8f\u0022,\u0022InternalName\u0022:\u0022_ComplianceTagWrittenTime\u0022,\u0022Title\u0022:\u0022Retention label Applied\u0022,\u0022FieldTypeKind\u0022:7,\u0022TypeAsString\u0022:\u0022Lookup\u0022},{\u0022Id\u0022:\u0022418d7676-2d6f-42cf-a16a-e43d2971252a\u0022,\u0022InternalName\u0022:\u0022_ComplianceTagUserId\u0022,\u0022Title\u0022:\u0022Label applied by\u0022,\u0022FieldTypeKind\u0022:7,\u0022TypeAsString\u0022:\u0022Lookup\u0022},{\u0022Id\u0022:\u00228382d247-72a9-44b1-9794-7b177edc89f3\u0022,\u0022InternalName\u0022:\u0022_IsRecord\u0022,\u0022Title\u0022:\u0022Item is a Record\u0022,\u0022FieldTypeKind\u0022:12,\u0022TypeAsString\u0022:\u0022Computed\u0022},{\u0022Id\u0022:\u0022052d75ed-7afd-4818-a346-d7e413073907\u0022,\u0022InternalName\u0022:\u0022BSN\u0022,\u0022Title\u0022:\u0022BLOB Sequence Number\u0022,\u0022FieldTypeKind\u0022:7,\u0022TypeAsString\u0022:\u0022Lookup\u0022},{\u0022Id\u0022:\u0022142b1fa5-b93b-42d8-a37c-813c9d3e3f3a\u0022,\u0022InternalName\u0022:\u0022_ListSchemaVersion\u0022,\u0022Title\u0022:\u0022List Schema Version\u0022,\u0022FieldTypeKind\u0022:7,\u0022TypeAsString\u0022:\u0022Lookup\u0022},{\u0022Id\u0022:\u0022d6d3555c-2f57-4b19-bd39-4582f88adfe5\u0022,\u0022InternalName\u0022:\u0022_Dirty\u0022,\u0022Title\u0022:\u0022Dirty\u0022,\u0022FieldTypeKind\u0022:7,\u0022TypeAsString\u0022:\u0022Lookup\u0022},{\u0022Id\u0022:\u0022d1faf7fe-868c-4748-bfee-e608a37721fb\u0022,\u0022InternalName\u0022:\u0022_Parsable\u0022,\u0022Title\u0022:\u0022Parsable\u0022,\u0022FieldTypeKind\u0022:7,\u0022TypeAsString\u0022:\u0022Lookup\u0022},{\u0022Id\u0022:\u0022aa445880-c723-44f1-ab01-61083d60cb2e\u0022,\u0022InternalName\u0022:\u0022_StubFile\u0022,\u0022Title\u0022:\u0022StubFile\u0022,\u0022FieldTypeKind\u0022:7,\u0022TypeAsString\u0022:\u0022Lookup\u0022},{\u0022Id\u0022:\u0022aea2e09b-09f5-423f-ab7f-72611e0ebffb\u0022,\u0022InternalName\u0022:\u0022_HasEncryptedContent\u0022,\u0022Title\u0022:\u0022HasEncryptedContent\u0022,\u0022FieldTypeKind\u0022:7,\u0022TypeAsString\u0022:\u0022Lookup\u0022},{\u0022Id\u0022:\u0022345b4112-babf-4642-ba31-c8f9eaf3b57a\u0022,\u0022InternalName\u0022:\u0022_HasUserDefinedProtection\u0022,\u0022Title\u0022:\u0022HasUserDefinedProtection\u0022,\u0022FieldTypeKind\u0022:7,\u0022TypeAsString\u0022:\u0022Lookup\u0022},{\u0022Id\u0022:\u0022b4cb04e8-622e-4c7d-8e87-b558a1bb907b\u0022,\u0022InternalName\u0022:\u0022AccessPolicy\u0022,\u0022Title\u0022:\u0022Access Policy\u0022,\u0022FieldTypeKind\u0022:7,\u0022TypeAsString\u0022:\u0022Lookup\u0022},{\u0022Id\u0022:\u0022df7ffe41-81d6-46eb-8777-444d1613c803\u0022,\u0022InternalName\u0022:\u0022_VirusStatus\u0022,\u0022Title\u0022:\u0022VirusStatus\u0022,\u0022FieldTypeKind\u0022:7,\u0022TypeAsString\u0022:\u0022Lookup\u0022},{\u0022Id\u0022:\u002232d407ed-15e1-4ccc-b1d4-c56f5799b256\u0022,\u0022InternalName\u0022:\u0022_VirusVendorID\u0022,\u0022Title\u0022:\u0022VirusVendorID\u0022,\u0022FieldTypeKind\u0022:7,\u0022TypeAsString\u0022:\u0022Lookup\u0022},{\u0022Id\u0022:\u0022c4b1727e-aca8-4bd8-ae83-f554ae3c08eb\u0022,\u0022InternalName\u0022:\u0022_VirusInfo\u0022,\u0022Title\u0022:\u0022VirusInfo\u0022,\u0022FieldTypeKind\u0022:7,\u0022TypeAsString\u0022:\u0022Lookup\u0022},{\u0022Id\u0022:\u0022c274cbfd-084a-4017-925f-cce50c9e3eec\u0022,\u0022InternalName\u0022:\u0022_CommentFlags\u0022,\u0022Title\u0022:\u0022Comment settings\u0022,\u0022FieldTypeKind\u0022:7,\u0022TypeAsString\u0022:\u0022Lookup\u0022},{\u0022Id\u0022:\u0022d307dff3-340f-44a2-9f4b-fbfe1ba07459\u0022,\u0022InternalName\u0022:\u0022_CommentCount\u0022,\u0022Title\u0022:\u0022Comment count\u0022,\u0022FieldTypeKind\u0022:7,\u0022TypeAsString\u0022:\u0022Lookup\u0022},{\u0022Id\u0022:\u0022db8d9d6d-dc9a-4fbd-85f3-4a753bfdc58c\u0022,\u0022InternalName\u0022:\u0022_LikeCount\u0022,\u0022Title\u0022:\u0022Like count\u0022,\u0022FieldTypeKind\u0022:7,\u0022TypeAsString\u0022:\u0022Lookup\u0022},{\u0022Id\u0022:\u00224fe24c84-f81d-4f97-9bcc-688ae643c086\u0022,\u0022InternalName\u0022:\u0022_RmsTemplateId\u0022,\u0022Title\u0022:\u0022Rights Management Template Id\u0022,\u0022FieldTypeKind\u0022:7,\u0022TypeAsString\u0022:\u0022Lookup\u0022},{\u0022Id\u0022:\u002245da82c2-f1a1-41f2-b916-ca115dac9364\u0022,\u0022InternalName\u0022:\u0022_IpLabelId\u0022,\u0022Title\u0022:\u0022Sensitivity Label Id\u0022,\u0022FieldTypeKind\u0022:7,\u0022TypeAsString\u0022:\u0022Lookup\u0022},{\u0022Id\u0022:\u00221a53ab5a-11f9-4b92-a377-8cfaaf6ba7be\u0022,\u0022InternalName\u0022:\u0022_DisplayName\u0022,\u0022Title\u0022:\u0022Sensitivity\u0022,\u0022FieldTypeKind\u0022:7,\u0022TypeAsString\u0022:\u0022Lookup\u0022},{\u0022Id\u0022:\u0022522bc266-7077-4b77-92f0-c8e86b856eb0\u0022,\u0022InternalName\u0022:\u0022_IpLabelAssignmentMethod\u0022,\u0022Title\u0022:\u0022Sensitivity Label Assignment Method\u0022,\u0022FieldTypeKind\u0022:7,\u0022TypeAsString\u0022:\u0022Lookup\u0022},{\u0022Id\u0022:\u00223a8ee3f8-166b-4394-b3e2-e98dcf86a847\u0022,\u0022InternalName\u0022:\u0022A2ODMountCount\u0022,\u0022Title\u0022:\u0022A2OD Mount Count\u0022,\u0022FieldTypeKind\u0022:7,\u0022TypeAsString\u0022:\u0022Lookup\u0022},{\u0022Id\u0022:\u0022ac9ce95b-f081-4b8a-bb19-2f4427d44674\u0022,\u0022InternalName\u0022:\u0022_ExpirationDate\u0022,\u0022Title\u0022:\u0022Expiration Date\u0022,\u0022FieldTypeKind\u0022:7,\u0022TypeAsString\u0022:\u0022Lookup\u0022},{\u0022Id\u0022:\u00223ad39ba5-a7f5-40f0-a970-ae9756dc49b0\u0022,\u0022InternalName\u0022:\u0022_IpLabelHash\u0022,\u0022Title\u0022:\u0022IpLabelHash\u0022,\u0022FieldTypeKind\u0022:7,\u0022TypeAsString\u0022:\u0022Lookup\u0022},{\u0022Id\u0022:\u0022d736872b-a0b9-4c9d-8750-ca0572b0b2da\u0022,\u0022InternalName\u0022:\u0022_IpLabelPromotionCtagVersion\u0022,\u0022Title\u0022:\u0022IpLabelPromotionCtagVersion\u0022,\u0022FieldTypeKind\u0022:7,\u0022TypeAsString\u0022:\u0022Lookup\u0022},{\u0022Id\u0022:\u002290b83bb8-3527-4526-8c68-d9dcfe467921\u0022,\u0022InternalName\u0022:\u0022_IpLabelMetaInfo\u0022,\u0022Title\u0022:\u0022Sensitivity Label Metadata\u0022,\u0022FieldTypeKind\u0022:7,\u0022TypeAsString\u0022:\u0022Lookup\u0022},{\u0022Id\u0022:\u00225075b983-f1d7-42c6-921a-f331958f0dc2\u0022,\u0022InternalName\u0022:\u0022_AdditionalStreamSize\u0022,\u0022Title\u0022:\u0022AdditionalStreamSize\u0022,\u0022FieldTypeKind\u0022:7,\u0022TypeAsString\u0022:\u0022Lookup\u0022},{\u0022Id\u0022:\u0022b3f0ac46-0d7d-477f-bfca-f822414d20d4\u0022,\u0022InternalName\u0022:\u0022_StreamScenarioIds\u0022,\u0022Title\u0022:\u0022StreamScenarioIds\u0022,\u0022FieldTypeKind\u0022:7,\u0022TypeAsString\u0022:\u0022Lookup\u0022},{\u0022Id\u0022:\u00226bfaba20-36bf-44b5-a1b2-eb6346d49716\u0022,\u0022InternalName\u0022:\u0022AppAuthor\u0022,\u0022Title\u0022:\u0022App Created By\u0022,\u0022FieldTypeKind\u0022:7,\u0022TypeAsString\u0022:\u0022Lookup\u0022},{\u0022Id\u0022:\u0022e08400f3-c779-4ed2-a18c-ab7f34caa318\u0022,\u0022InternalName\u0022:\u0022AppEditor\u0022,\u0022Title\u0022:\u0022App Modified By\u0022,\u0022FieldTypeKind\u0022:7,\u0022TypeAsString\u0022:\u0022Lookup\u0022},{\u0022Id\u0022:\u00224df6bfaf-f887-424e-8ea3-fd050113e7a9\u0022,\u0022InternalName\u0022:\u0022SMTotalSize\u0022,\u0022Title\u0022:\u0022Total Size\u0022,\u0022FieldTypeKind\u0022:7,\u0022TypeAsString\u0022:\u0022Lookup\u0022},{\u0022Id\u0022:\u0022d340fca5-f503-4baa-bae9-90f1447ebff6\u0022,\u0022InternalName\u0022:\u0022SMLastModifiedDate\u0022,\u0022Title\u0022:\u0022Last Modified Date\u0022,\u0022FieldTypeKind\u0022:7,\u0022TypeAsString\u0022:\u0022Lookup\u0022},{\u0022Id\u0022:\u00221faa4902-9115-44b9-bba7-791441ca1d6f\u0022,\u0022InternalName\u0022:\u0022SMTotalFileStreamSize\u0022,\u0022Title\u0022:\u0022Total File Stream Size\u0022,\u0022FieldTypeKind\u0022:7,\u0022TypeAsString\u0022:\u0022Lookup\u0022},{\u0022Id\u0022:\u0022a261b12a-8ca2-47fa-a117-05861d637c7e\u0022,\u0022InternalName\u0022:\u0022SMTotalFileCount\u0022,\u0022Title\u0022:\u0022Total File Count\u0022,\u0022FieldTypeKind\u0022:7,\u0022TypeAsString\u0022:\u0022Lookup\u0022},{\u0022Id\u0022:\u0022b1f7969b-ea65-42e1-8b54-b588292635f2\u0022,\u0022InternalName\u0022:\u0022SelectTitle\u0022,\u0022Title\u0022:\u0022Select\u0022,\u0022FieldTypeKind\u0022:12,\u0022TypeAsString\u0022:\u0022Computed\u0022},{\u0022Id\u0022:\u00225f47e085-2150-41dc-b661-442f3027f552\u0022,\u0022InternalName\u0022:\u0022SelectFilename\u0022,\u0022Title\u0022:\u0022Select\u0022,\u0022FieldTypeKind\u0022:12,\u0022TypeAsString\u0022:\u0022Computed\u0022},{\u0022Id\u0022:\u0022503f1caa-358e-4918-9094-4a2cdc4bc034\u0022,\u0022InternalName\u0022:\u0022Edit\u0022,\u0022Title\u0022:\u0022Edit\u0022,\u0022FieldTypeKind\u0022:12,\u0022TypeAsString\u0022:\u0022Computed\u0022},{\u0022Id\u0022:\u0022d4e44a66-ee3a-4d02-88c9-4ec5ff3f4cd5\u0022,\u0022InternalName\u0022:\u0022owshiddenversion\u0022,\u0022Title\u0022:\u0022owshiddenversion\u0022,\u0022FieldTypeKind\u0022:1,\u0022TypeAsString\u0022:\u0022Integer\u0022},{\u0022Id\u0022:\u00227841bf41-43d0-4434-9f50-a673baef7631\u0022,\u0022InternalName\u0022:\u0022_UIVersion\u0022,\u0022Title\u0022:\u0022UI Version\u0022,\u0022FieldTypeKind\u0022:1,\u0022TypeAsString\u0022:\u0022Integer\u0022},{\u0022Id\u0022:\u0022dce8262a-3ae9-45aa-aab4-83bd75fb738a\u0022,\u0022InternalName\u0022:\u0022_UIVersionString\u0022,\u0022Title\u0022:\u0022Version\u0022,\u0022FieldTypeKind\u0022:2,\u0022TypeAsString\u0022:\u0022Text\u0022},{\u0022Id\u0022:\u002250a54da4-1528-4e67-954a-e2d24f1e9efb\u0022,\u0022InternalName\u0022:\u0022InstanceID\u0022,\u0022Title\u0022:\u0022Instance ID\u0022,\u0022FieldTypeKind\u0022:1,\u0022TypeAsString\u0022:\u0022Integer\u0022},{\u0022Id\u0022:\u0022ca4addac-796f-4b23-b093-d2a3f65c0774\u0022,\u0022InternalName\u0022:\u0022Order\u0022,\u0022Title\u0022:\u0022Order\u0022,\u0022FieldTypeKind\u0022:9,\u0022TypeAsString\u0022:\u0022Number\u0022},{\u0022Id\u0022:\u0022ae069f25-3ac2-4256-b9c3-15dbc15da0e0\u0022,\u0022InternalName\u0022:\u0022GUID\u0022,\u0022Title\u0022:\u0022GUID\u0022,\u0022FieldTypeKind\u0022:14,\u0022TypeAsString\u0022:\u0022Guid\u0022},{\u0022Id\u0022:\u0022f1e020bc-ba26-443f-bf2f-b68715017bbc\u0022,\u0022InternalName\u0022:\u0022WorkflowVersion\u0022,\u0022Title\u0022:\u0022Workflow Version\u0022,\u0022FieldTypeKind\u0022:1,\u0022TypeAsString\u0022:\u0022Integer\u0022},{\u0022Id\u0022:\u0022de8beacf-5505-47cd-80a6-aa44e7ffe2f4\u0022,\u0022InternalName\u0022:\u0022WorkflowInstanceID\u0022,\u0022Title\u0022:\u0022Workflow Instance ID\u0022,\u0022FieldTypeKind\u0022:14,\u0022TypeAsString\u0022:\u0022Guid\u0022},{\u0022Id\u0022:\u0022bc1a8efb-0f4c-49f8-a38f-7fe22af3d3e0\u0022,\u0022InternalName\u0022:\u0022ParentVersionString\u0022,\u0022Title\u0022:\u0022Source Version (Converted Document)\u0022,\u0022FieldTypeKind\u0022:7,\u0022TypeAsString\u0022:\u0022Lookup\u0022},{\u0022Id\u0022:\u0022774eab3a-855f-4a34-99da-69dc21043bec\u0022,\u0022InternalName\u0022:\u0022ParentLeafName\u0022,\u0022Title\u0022:\u0022Source Name (Converted Document)\u0022,\u0022FieldTypeKind\u0022:7,\u0022TypeAsString\u0022:\u0022Lookup\u0022},{\u0022Id\u0022:\u00228e69e8e8-df8a-45dc-858a-1b806dde24c0\u0022,\u0022InternalName\u0022:\u0022DocConcurrencyNumber\u0022,\u0022Title\u0022:\u0022Document Concurrency Number\u0022,\u0022FieldTypeKind\u0022:7,\u0022TypeAsString\u0022:\u0022Lookup\u0022},{\u0022Id\u0022:\u0022692b7133-d1d1-4a01-b604-2987724f86c3\u0022,\u0022InternalName\u0022:\u0022StreamHash\u0022,\u0022Title\u0022:\u0022Document Stream Hash\u0022,\u0022FieldTypeKind\u0022:7,\u0022TypeAsString\u0022:\u0022Lookup\u0022},{\u0022Id\u0022:\u0022e52012a0-51eb-4c0c-8dfb-9b8a0ebedcb6\u0022,\u0022InternalName\u0022:\u0022Combine\u0022,\u0022Title\u0022:\u0022Merge\u0022,\u0022FieldTypeKind\u0022:12,\u0022TypeAsString\u0022:\u0022Computed\u0022},{\u0022Id\u0022:\u00225d36727b-bcb2-47d2-a231-1f0bc63b7439\u0022,\u0022InternalName\u0022:\u0022RepairDocument\u0022,\u0022Title\u0022:\u0022Relink\u0022,\u0022FieldTypeKind\u0022:12,\u0022TypeAsString\u0022:\u0022Computed\u0022},{\u0022Id\u0022:\u0022321bc046-2178-49bd-893f-7aa4fd61d04e\u0022,\u0022InternalName\u0022:\u0022PolicyDisabledUICapabilities\u0022,\u0022Title\u0022:\u0022Actions Disabled by Policy\u0022,\u0022FieldTypeKind\u0022:12,\u0022TypeAsString\u0022:\u0022Computed\u0022}],\u0022Items\u0022:[{\u0022FileSystemObjectType\u0022:0,\u0022Id\u0022:1,\u0022ServerRedirectedEmbedUri\u0022:null,\u0022ServerRedirectedEmbedUrl\u0022:\u0022\u0022,\u0022ContentTypeId\u0022:\u00220x01010051DF58F8CC0D084EBCF152E0693EB788\u0022,\u0022OData__ColorTag\u0022:null,\u0022ComplianceAssetId\u0022:null,\u0022Title\u0022:null,\u0022TestImage\u0022:\u0022{\\\u0022fileName\\\u0022:\\\u0022river.jpg\\\u0022,\\\u0022serverRelativeUrl\\\u0022:\\\u0022/sites/DNTest/SiteAssets/Lists/dfe5e305-80fb-4578-a521-496b47927628/river.jpg\\\u0022,\\\u0022id\\\u0022:\\\u0022cb711ba8-418f-4072-970b-a1afa5f2f624\\\u0022,\\\u0022serverUrl\\\u0022:\\\u0022https://hsftrms.sharepoint.com\\\u0022,\\\u0022thumbnailRenderer\\\u0022:null}\u0022,\u0022TestLocation\u0022:\u0022{\\\u0022EntityType\\\u0022:\\\u0022LocalBusiness\\\u0022,\\\u0022LocationSource\\\u0022:\\\u0022Bing\\\u0022,\\\u0022LocationUri\\\u0022:\\\u0022https://www.bingapis.com/api/v6/localbusinesses/YN3724x3883274883924636278\\\u0022,\\\u0022UniqueId\\\u0022:\\\u0022https://www.bingapis.com/api/v6/localbusinesses/YN3724x3883274883924636278\\\u0022,\\\u0022DisplayName\\\u0022:\\\u0022Melbourne Marriott Hotel\\\u0022,\\\u0022Address\\\u0022:{\\\u0022Street\\\u0022:\\\u0022Corner Exhibition \u0026 Lonsdale Streets\\\u0022,\\\u0022City\\\u0022:\\\u0022Melbourne\\\u0022,\\\u0022State\\\u0022:\\\u0022Victoria\\\u0022,\\\u0022CountryOrRegion\\\u0022:\\\u0022Australia\\\u0022,\\\u0022PostalCode\\\u0022:\\\u00223000\\\u0022},\\\u0022Coordinates\\\u0022:{\\\u0022Latitude\\\u0022:-37.8099,\\\u0022Longitude\\\u0022:144.969}}\u0022,\u0022CountryOrRegion\u0022:\u0022Australia\u0022,\u0022State\u0022:\u0022Victoria\u0022,\u0022City\u0022:\u0022Melbourne\u0022,\u0022PostalCode\u0022:\u00223000\u0022,\u0022Street\u0022:\u0022Corner Exhibition \u0026 Lonsdale Streets\u0022,\u0022GeoLoc\u0022:{\u0022Altitude\u0022:0.0,\u0022Latitude\u0022:-37.8099,\u0022Longitude\u0022:144.969,\u0022Measure\u0022:0.0},\u0022DispName\u0022:\u0022Melbourne Marriott Hotel\u0022,\u0022SecondLocation\u0022:\u0022{\\\u0022EntityType\\\u0022:\\\u0022LocalBusiness\\\u0022,\\\u0022LocationSource\\\u0022:\\\u0022Bing\\\u0022,\\\u0022LocationUri\\\u0022:\\\u0022https://www.bingapis.com/api/v6/localbusinesses/YN2000x670149153\\\u0022,\\\u0022UniqueId\\\u0022:\\\u0022https://www.bingapis.com/api/v6/localbusinesses/YN2000x670149153\\\u0022,\\\u0022DisplayName\\\u0022:\\\u0022Paris France Hotel\\\u0022,\\\u0022Address\\\u0022:{\\\u0022Street\\\u0022:\\\u002272 Rue De Turbigo\\\u0022,\\\u0022City\\\u0022:\\\u0022Paris\\\u0022,\\\u0022State\\\u0022:\\\u0022\\u00cele-de-France\\\u0022,\\\u0022CountryOrRegion\\\u0022:\\\u0022France\\\u0022,\\\u0022PostalCode\\\u0022:\\\u002275003\\\u0022},\\\u0022Coordinates\\\u0022:{\\\u0022Latitude\\\u0022:48.8664,\\\u0022Longitude\\\u0022:2.36055}}\u0022,\u0022CountryOrRegion0\u0022:\u0022France\u0022,\u0022State0\u0022:\u0022\\u00cele-de-France\u0022,\u0022City0\u0022:\u0022Paris\u0022,\u0022PostalCode0\u0022:\u002275003\u0022,\u0022Street0\u0022:\u002272 Rue De Turbigo\u0022,\u0022GeoLoc0\u0022:{\u0022Altitude\u0022:0.0,\u0022Latitude\u0022:48.8664,\u0022Longitude\u0022:2.36055,\u0022Measure\u0022:0.0},\u0022DispName0\u0022:\u0022Paris France Hotel\u0022,\u0022ID\u0022:1,\u0022Created\u0022:\u00222024-02-03T04:02:46Z\u0022,\u0022AuthorId\u0022:13,\u0022Modified\u0022:\u00222024-02-04T22:17:52Z\u0022,\u0022EditorId\u0022:13,\u0022OData__CopySource\u0022:null,\u0022CheckoutUserId\u0022:null,\u0022OData__UIVersionString\u0022:\u00224.0\u0022,\u0022GUID\u0022:\u0022d602c406-84b6-4acb-bf07-e170aabfb39d\u0022}],\u0022Id\u0022:\u0022dfe5e305-80fb-4578-a521-496b47927628\u0022}"} \ No newline at end of file diff --git a/src/sdk/PnP.Core.Test/SharePoint/MockData/ListItemTests/ImageAndLocationFieldLoadListDataAsStreamTest-0-00003.response.json b/src/sdk/PnP.Core.Test/SharePoint/MockData/ListItemTests/ImageAndLocationFieldLoadListDataAsStreamTest-0-00003.response.json new file mode 100644 index 0000000000..4c16694935 --- /dev/null +++ b/src/sdk/PnP.Core.Test/SharePoint/MockData/ListItemTests/ImageAndLocationFieldLoadListDataAsStreamTest-0-00003.response.json @@ -0,0 +1 @@ +{"IsSuccessStatusCode":true,"StatusCode":200,"Headers":{"SPRequestGuid":"a38708a1-2089-3000-032a-d91fd9043f33","SPClientServiceRequestDuration":"607","X-SharePointHealthScore":"2","X-SP-SERVERSTATE":"ReadOnly=0"},"Response":"{\u0022d\u0022:{\u0022results\u0022:[{\u0022__metadata\u0022:{\u0022id\u0022:\u0022f548d02f-b86e-43e9-9a6f-57c0e291f278\u0022,\u0022uri\u0022:\u0022https://hsftrms.sharepoint.com/sites/DNTest/_api/Web/Lists(guid\u0027dfe5e305-80fb-4578-a521-496b47927628\u0027)/Items(1)\u0022,\u0022etag\u0022:\u0022\\\u00224\\\u0022\u0022,\u0022type\u0022:\u0022SP.Data.WithImageAndLocationItem\u0022},\u0022FirstUniqueAncestorSecurableObject\u0022:{\u0022__deferred\u0022:{\u0022uri\u0022:\u0022https://hsftrms.sharepoint.com/sites/DNTest/_api/Web/Lists(guid\u0027dfe5e305-80fb-4578-a521-496b47927628\u0027)/Items(1)/FirstUniqueAncestorSecurableObject\u0022}},\u0022RoleAssignments\u0022:{\u0022__deferred\u0022:{\u0022uri\u0022:\u0022https://hsftrms.sharepoint.com/sites/DNTest/_api/Web/Lists(guid\u0027dfe5e305-80fb-4578-a521-496b47927628\u0027)/Items(1)/RoleAssignments\u0022}},\u0022AttachmentFiles\u0022:{\u0022__deferred\u0022:{\u0022uri\u0022:\u0022https://hsftrms.sharepoint.com/sites/DNTest/_api/Web/Lists(guid\u0027dfe5e305-80fb-4578-a521-496b47927628\u0027)/Items(1)/AttachmentFiles\u0022}},\u0022ContentType\u0022:{\u0022__deferred\u0022:{\u0022uri\u0022:\u0022https://hsftrms.sharepoint.com/sites/DNTest/_api/Web/Lists(guid\u0027dfe5e305-80fb-4578-a521-496b47927628\u0027)/Items(1)/ContentType\u0022}},\u0022GetDlpPolicyTip\u0022:{\u0022__deferred\u0022:{\u0022uri\u0022:\u0022https://hsftrms.sharepoint.com/sites/DNTest/_api/Web/Lists(guid\u0027dfe5e305-80fb-4578-a521-496b47927628\u0027)/Items(1)/GetDlpPolicyTip\u0022}},\u0022FieldValuesAsHtml\u0022:{\u0022__deferred\u0022:{\u0022uri\u0022:\u0022https://hsftrms.sharepoint.com/sites/DNTest/_api/Web/Lists(guid\u0027dfe5e305-80fb-4578-a521-496b47927628\u0027)/Items(1)/FieldValuesAsHtml\u0022}},\u0022FieldValuesAsText\u0022:{\u0022__deferred\u0022:{\u0022uri\u0022:\u0022https://hsftrms.sharepoint.com/sites/DNTest/_api/Web/Lists(guid\u0027dfe5e305-80fb-4578-a521-496b47927628\u0027)/Items(1)/FieldValuesAsText\u0022}},\u0022FieldValuesForEdit\u0022:{\u0022__deferred\u0022:{\u0022uri\u0022:\u0022https://hsftrms.sharepoint.com/sites/DNTest/_api/Web/Lists(guid\u0027dfe5e305-80fb-4578-a521-496b47927628\u0027)/Items(1)/FieldValuesForEdit\u0022}},\u0022File\u0022:{\u0022__deferred\u0022:{\u0022uri\u0022:\u0022https://hsftrms.sharepoint.com/sites/DNTest/_api/Web/Lists(guid\u0027dfe5e305-80fb-4578-a521-496b47927628\u0027)/Items(1)/File\u0022}},\u0022Folder\u0022:{\u0022__deferred\u0022:{\u0022uri\u0022:\u0022https://hsftrms.sharepoint.com/sites/DNTest/_api/Web/Lists(guid\u0027dfe5e305-80fb-4578-a521-496b47927628\u0027)/Items(1)/Folder\u0022}},\u0022LikedByInformation\u0022:{\u0022__deferred\u0022:{\u0022uri\u0022:\u0022https://hsftrms.sharepoint.com/sites/DNTest/_api/Web/Lists(guid\u0027dfe5e305-80fb-4578-a521-496b47927628\u0027)/Items(1)/LikedByInformation\u0022}},\u0022ParentList\u0022:{\u0022__deferred\u0022:{\u0022uri\u0022:\u0022https://hsftrms.sharepoint.com/sites/DNTest/_api/Web/Lists(guid\u0027dfe5e305-80fb-4578-a521-496b47927628\u0027)/Items(1)/ParentList\u0022}},\u0022Properties\u0022:{\u0022__deferred\u0022:{\u0022uri\u0022:\u0022https://hsftrms.sharepoint.com/sites/DNTest/_api/Web/Lists(guid\u0027dfe5e305-80fb-4578-a521-496b47927628\u0027)/Items(1)/Properties\u0022}},\u0022Versions\u0022:{\u0022__deferred\u0022:{\u0022uri\u0022:\u0022https://hsftrms.sharepoint.com/sites/DNTest/_api/Web/Lists(guid\u0027dfe5e305-80fb-4578-a521-496b47927628\u0027)/Items(1)/Versions\u0022}},\u0022FileSystemObjectType\u0022:0,\u0022Id\u0022:1,\u0022ServerRedirectedEmbedUri\u0022:null,\u0022ServerRedirectedEmbedUrl\u0022:\u0022\u0022,\u0022ContentTypeId\u0022:\u00220x01010051DF58F8CC0D084EBCF152E0693EB788\u0022,\u0022OData__ColorTag\u0022:null,\u0022ComplianceAssetId\u0022:null,\u0022Title\u0022:null,\u0022TestImage\u0022:\u0022{\\\u0022fileName\\\u0022:\\\u0022river.jpg\\\u0022,\\\u0022serverRelativeUrl\\\u0022:\\\u0022/sites/DNTest/SiteAssets/Lists/dfe5e305-80fb-4578-a521-496b47927628/river.jpg\\\u0022,\\\u0022id\\\u0022:\\\u0022cb711ba8-418f-4072-970b-a1afa5f2f624\\\u0022,\\\u0022serverUrl\\\u0022:\\\u0022https://hsftrms.sharepoint.com\\\u0022,\\\u0022thumbnailRenderer\\\u0022:null}\u0022,\u0022TestLocation\u0022:\u0022{\\\u0022EntityType\\\u0022:\\\u0022LocalBusiness\\\u0022,\\\u0022LocationSource\\\u0022:\\\u0022Bing\\\u0022,\\\u0022LocationUri\\\u0022:\\\u0022https://www.bingapis.com/api/v6/localbusinesses/YN3724x3883274883924636278\\\u0022,\\\u0022UniqueId\\\u0022:\\\u0022https://www.bingapis.com/api/v6/localbusinesses/YN3724x3883274883924636278\\\u0022,\\\u0022DisplayName\\\u0022:\\\u0022Melbourne Marriott Hotel\\\u0022,\\\u0022Address\\\u0022:{\\\u0022Street\\\u0022:\\\u0022Corner Exhibition \u0026 Lonsdale Streets\\\u0022,\\\u0022City\\\u0022:\\\u0022Melbourne\\\u0022,\\\u0022State\\\u0022:\\\u0022Victoria\\\u0022,\\\u0022CountryOrRegion\\\u0022:\\\u0022Australia\\\u0022,\\\u0022PostalCode\\\u0022:\\\u00223000\\\u0022},\\\u0022Coordinates\\\u0022:{\\\u0022Latitude\\\u0022:-37.8099,\\\u0022Longitude\\\u0022:144.969}}\u0022,\u0022CountryOrRegion\u0022:\u0022Australia\u0022,\u0022State\u0022:\u0022Victoria\u0022,\u0022City\u0022:\u0022Melbourne\u0022,\u0022PostalCode\u0022:\u00223000\u0022,\u0022Street\u0022:\u0022Corner Exhibition \u0026 Lonsdale Streets\u0022,\u0022GeoLoc\u0022:{\u0022__metadata\u0022:{\u0022type\u0022:\u0022SP.FieldGeolocationValue\u0022},\u0022Altitude\u0022:0,\u0022Latitude\u0022:-37.8099,\u0022Longitude\u0022:144.969,\u0022Measure\u0022:0},\u0022DispName\u0022:\u0022Melbourne Marriott Hotel\u0022,\u0022SecondLocation\u0022:\u0022{\\\u0022EntityType\\\u0022:\\\u0022LocalBusiness\\\u0022,\\\u0022LocationSource\\\u0022:\\\u0022Bing\\\u0022,\\\u0022LocationUri\\\u0022:\\\u0022https://www.bingapis.com/api/v6/localbusinesses/YN2000x670149153\\\u0022,\\\u0022UniqueId\\\u0022:\\\u0022https://www.bingapis.com/api/v6/localbusinesses/YN2000x670149153\\\u0022,\\\u0022DisplayName\\\u0022:\\\u0022Paris France Hotel\\\u0022,\\\u0022Address\\\u0022:{\\\u0022Street\\\u0022:\\\u002272 Rue De Turbigo\\\u0022,\\\u0022City\\\u0022:\\\u0022Paris\\\u0022,\\\u0022State\\\u0022:\\\u0022\\u00cele-de-France\\\u0022,\\\u0022CountryOrRegion\\\u0022:\\\u0022France\\\u0022,\\\u0022PostalCode\\\u0022:\\\u002275003\\\u0022},\\\u0022Coordinates\\\u0022:{\\\u0022Latitude\\\u0022:48.8664,\\\u0022Longitude\\\u0022:2.36055}}\u0022,\u0022CountryOrRegion0\u0022:\u0022France\u0022,\u0022State0\u0022:\u0022\\u00cele-de-France\u0022,\u0022City0\u0022:\u0022Paris\u0022,\u0022PostalCode0\u0022:\u002275003\u0022,\u0022Street0\u0022:\u002272 Rue De Turbigo\u0022,\u0022GeoLoc0\u0022:{\u0022__metadata\u0022:{\u0022type\u0022:\u0022SP.FieldGeolocationValue\u0022},\u0022Altitude\u0022:0,\u0022Latitude\u0022:48.8664,\u0022Longitude\u0022:2.36055,\u0022Measure\u0022:0},\u0022DispName0\u0022:\u0022Paris France Hotel\u0022,\u0022ID\u0022:1,\u0022Created\u0022:\u00222024-02-02T20:02:46\u0022,\u0022AuthorId\u0022:13,\u0022Modified\u0022:\u00222024-02-04T14:17:52\u0022,\u0022EditorId\u0022:13,\u0022OData__CopySource\u0022:null,\u0022CheckoutUserId\u0022:null,\u0022LinkFilename\u0022:\u0022settings.dat\u0022,\u0022OData__UIVersionString\u0022:\u00224.0\u0022,\u0022GUID\u0022:\u0022d602c406-84b6-4acb-bf07-e170aabfb39d\u0022}]}}"} \ No newline at end of file diff --git a/src/sdk/PnP.Core.Test/SharePoint/MockData/ListItemTests/ImageAndLocationFieldLoadListDataAsStreamTest-0-00004.response.json b/src/sdk/PnP.Core.Test/SharePoint/MockData/ListItemTests/ImageAndLocationFieldLoadListDataAsStreamTest-0-00004.response.json new file mode 100644 index 0000000000..5cc9dcb54a --- /dev/null +++ b/src/sdk/PnP.Core.Test/SharePoint/MockData/ListItemTests/ImageAndLocationFieldLoadListDataAsStreamTest-0-00004.response.json @@ -0,0 +1 @@ +{"IsSuccessStatusCode":true,"StatusCode":200,"Headers":{"SPRequestGuid":"238408a1-c0b3-3000-032a-d392a7a32c1e","SPClientServiceRequestDuration":"29","X-SharePointHealthScore":"1","X-SP-SERVERSTATE":"ReadOnly=0"},"Response":"{\u0022d\u0022:{\u0022results\u0022:[{\u0022__metadata\u0022:{\u0022id\u0022:\u00227ff69d82-ee5c-42a4-9382-84e023de26bd\u0022,\u0022uri\u0022:\u0022https://hsftrms.sharepoint.com/sites/DNTest/_api/Web/Lists(guid\u0027dfe5e305-80fb-4578-a521-496b47927628\u0027)/Items(1)\u0022,\u0022etag\u0022:\u0022\\\u00223\\\u0022\u0022,\u0022type\u0022:\u0022SP.Data.WithImageAndLocationItem\u0022},\u0022Id\u0022:1,\u0022ID\u0022:1,\u0022LinkFilename\u0022:\u0022settings.dat\u0022}]}}"} \ No newline at end of file diff --git a/src/sdk/PnP.Core/Model/SharePoint/Core/Internal/FieldThumbnailValue.cs b/src/sdk/PnP.Core/Model/SharePoint/Core/Internal/FieldThumbnailValue.cs new file mode 100644 index 0000000000..447fc109d5 --- /dev/null +++ b/src/sdk/PnP.Core/Model/SharePoint/Core/Internal/FieldThumbnailValue.cs @@ -0,0 +1,94 @@ +using System; +using System.Collections.Generic; +using System.Text.Json; + +namespace PnP.Core.Model.SharePoint +{ + /// + /// Represents a location field value + /// + public sealed class FieldThumbnailValue + : FieldValue, IFieldThumbnailValue + { + /// + /// Default constructor + /// + public FieldThumbnailValue() : base() + { + } + + internal override string SharePointRestType => ""; + + internal override Guid CsomType => Guid.Empty; + + public string FileName { get => GetValue(); internal set => SetValue(value); } + + public string ServerRelativeUrl { get => GetValue(); internal set => SetValue(value); } + + public string ServerUrl { get => GetValue(); internal set => SetValue(value); } + + public object ThumbnailRenderer { get => GetValue(); internal set => SetValue(value); } + + internal override IFieldValue FromJson(JsonElement json) + { + if (json.ValueKind == JsonValueKind.Null || json.ValueKind == JsonValueKind.Undefined) + { + FileName = string.Empty; + } + else + { + return FromListDataAsStream(json.ToObject>()); + } + + // Clear changes + Commit(); + + return this; + } + + internal override IFieldValue FromListDataAsStream(Dictionary properties) + { + if (properties.ContainsKey("fileName")) + { + FileName = properties["fileName"]; + } + if (properties.ContainsKey("serverRelativeUrl")) + { + ServerRelativeUrl = properties["serverRelativeUrl"]; + } + if (properties.ContainsKey("serverUrl")) + { + ServerUrl = properties["serverUrl"]; + } + if (properties.ContainsKey("thumbnailRenderer")) + { + ThumbnailRenderer = properties["thumbnailRenderer"]; + } + // Clear changes + Commit(); + + return this; + } + + internal override object ToJson() + { + var updateMessage = new + { + + }; + + return updateMessage; + } + + internal override object ToValidateUpdateItemJson() + { + return null; + } + + internal override string ToCsomXml() + { + return ""; + } + + } +} diff --git a/src/sdk/PnP.Core/Model/SharePoint/Core/Internal/ListDataAsStreamHandler.cs b/src/sdk/PnP.Core/Model/SharePoint/Core/Internal/ListDataAsStreamHandler.cs index 614fa1203e..6a8a9bf5de 100644 --- a/src/sdk/PnP.Core/Model/SharePoint/Core/Internal/ListDataAsStreamHandler.cs +++ b/src/sdk/PnP.Core/Model/SharePoint/Core/Internal/ListDataAsStreamHandler.cs @@ -519,6 +519,7 @@ private static Tuple DetectSpecialFieldType(string name, IFiel case "TaxonomyFieldTypeMulti": return new Tuple(new FieldTaxonomyValue() { Field = field }, true); case "TaxonomyFieldType": return new Tuple(new FieldTaxonomyValue() { Field = field }, false); case "Location": return new Tuple(new FieldLocationValue() { Field = field }, false); + case "Thumbnail": return new Tuple(new FieldThumbnailValue() { Field = field }, false); default: { @@ -535,7 +536,7 @@ private static string GetJsonPropertyValueAsString(JsonElement propertyValue) } else if (propertyValue.ValueKind == JsonValueKind.Number) { - return propertyValue.GetInt32().ToString(); + return propertyValue.GetDouble().ToString(); } else if (propertyValue.ValueKind == JsonValueKind.Undefined) { @@ -692,6 +693,10 @@ private static object GetJsonPropertyValue(JsonElement propertyValue, FieldType { return null; } + else if (propertyValue.ValueKind == JsonValueKind.Object) + { + return propertyValue.ToObject(); + } else { return propertyValue.GetString(); diff --git a/src/sdk/PnP.Core/Model/SharePoint/Core/Public/IFieldThumbnailValue.cs b/src/sdk/PnP.Core/Model/SharePoint/Core/Public/IFieldThumbnailValue.cs new file mode 100644 index 0000000000..1895c1d37b --- /dev/null +++ b/src/sdk/PnP.Core/Model/SharePoint/Core/Public/IFieldThumbnailValue.cs @@ -0,0 +1,26 @@ +namespace PnP.Core.Model.SharePoint +{ + /// + /// Represents a image (thumbnail) field value + /// + public interface IFieldThumbnailValue + : IFieldValue + { + /// + /// Filename identifiying this image + /// + public string FileName { get; } + /// + /// Server relative URL to access this image + /// + public string ServerRelativeUrl { get; } + /// + /// Server URL + /// + public string ServerUrl { get; } + /// + /// Thumbnail renderer + /// + public object ThumbnailRenderer { get; } + } +} diff --git a/src/sdk/PnP.Core/Services/Core/JsonMappingHelper.cs b/src/sdk/PnP.Core/Services/Core/JsonMappingHelper.cs index 0e795111dd..eb0cf4763d 100644 --- a/src/sdk/PnP.Core/Services/Core/JsonMappingHelper.cs +++ b/src/sdk/PnP.Core/Services/Core/JsonMappingHelper.cs @@ -541,6 +541,21 @@ private async static Task> ProcessSpecialRestFieldTypeAsyn fieldValue.IsArray = false; return new Tuple(fieldValue, propertyName); } + case "Thumbnail": + { + var fieldValue = new FieldThumbnailValue() { Field = field }; + if (json.ValueKind != JsonValueKind.Null && json.ValueKind != JsonValueKind.Undefined) + { + var parsedFieldContent = JsonSerializer.Deserialize(json.GetString()); + fieldValue.FromJson(parsedFieldContent); + } + else + { + fieldValue.FromJson(new JsonElement()); + } + fieldValue.IsArray = false; + return new Tuple(fieldValue, propertyName); + } default: { return new Tuple(null, null);