diff --git a/proprietary/GoogleWorkspace/GoogleMimeTypes.cs b/proprietary/GoogleWorkspace/GoogleMimeTypes.cs new file mode 100644 index 000000000..f824e751b --- /dev/null +++ b/proprietary/GoogleWorkspace/GoogleMimeTypes.cs @@ -0,0 +1,104 @@ +// Copyright (c) 2026 Duplicati Inc. All rights reserved. + +namespace Duplicati.Proprietary.GoogleWorkspace; + +/// +/// Provides MIME type constants and helper methods for Google Workspace file types. +/// +public static class GoogleMimeTypes +{ + /// + /// MIME type prefix for Google Apps. + /// + public const string GoogleAppsPrefix = "application/vnd.google-apps."; + + /// + /// Google Drive folder MIME type. + /// + public const string Folder = "application/vnd.google-apps.folder"; + + /// + /// Google Drive shortcut MIME type. + /// + public const string Shortcut = "application/vnd.google-apps.shortcut"; + + /// + /// Google Docs document MIME type. + /// + public const string Document = "application/vnd.google-apps.document"; + + /// + /// Google Sheets spreadsheet MIME type. + /// + public const string Spreadsheet = "application/vnd.google-apps.spreadsheet"; + + /// + /// Google Slides presentation MIME type. + /// + public const string Presentation = "application/vnd.google-apps.presentation"; + + /// + /// Google Apps Script MIME type. + /// + public const string Script = "application/vnd.google-apps.script"; + + /// + /// Google Sites MIME type. + /// + public const string Site = "application/vnd.google-apps.site"; + + /// + /// Microsoft Word document export MIME type. + /// + public const string WordDocument = "application/vnd.openxmlformats-officedocument.wordprocessingml.document"; + + /// + /// Microsoft Excel spreadsheet export MIME type. + /// + public const string ExcelSpreadsheet = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; + + /// + /// Microsoft PowerPoint presentation export MIME type. + /// + public const string PowerPointPresentation = "application/vnd.openxmlformats-officedocument.presentationml.presentation"; + + /// + /// Google Apps Script JSON export MIME type. + /// + public const string ScriptJson = "application/vnd.google-apps.script+json"; + + /// + /// PDF export MIME type. + /// + public const string Pdf = "application/pdf"; + + /// + /// Determines whether the specified MIME type represents a Google Workspace document + /// that can be exported (not a folder or shortcut). + /// + /// The MIME type to check. + /// true if the MIME type represents a Google Workspace document; otherwise, false. + public static bool IsGoogleDoc(string mimeType) + { + return mimeType.StartsWith(GoogleAppsPrefix, StringComparison.Ordinal) && + mimeType != Folder && + mimeType != Shortcut; + } + + /// + /// Gets the appropriate export MIME type for a Google Workspace document. + /// + /// The Google Workspace MIME type. + /// The export MIME type for the document. + public static string GetExportMimeType(string mimeType) + { + return mimeType switch + { + Document => WordDocument, + Spreadsheet => ExcelSpreadsheet, + Presentation => PowerPointPresentation, + Script => ScriptJson, + _ => Pdf + }; + } +} diff --git a/proprietary/GoogleWorkspace/SourceItems/CalendarEventAttachmentSourceEntry.cs b/proprietary/GoogleWorkspace/SourceItems/CalendarEventAttachmentSourceEntry.cs index b505b164a..fa397d04e 100644 --- a/proprietary/GoogleWorkspace/SourceItems/CalendarEventAttachmentSourceEntry.cs +++ b/proprietary/GoogleWorkspace/SourceItems/CalendarEventAttachmentSourceEntry.cs @@ -44,7 +44,7 @@ internal class CalendarEventAttachmentSourceEntry(SourceProvider provider, strin { "gsuite:v", "1" }, { "gsuite:Type", SourceItemType.CalendarEventAttachment.ToString() }, { "gsuite:Name", attachment.Title }, - { "gsuite:id", attachment.FileId ?? attachment.FileUrl }, + { "gsuite:Id", attachment.FileId ?? attachment.FileUrl }, { "gsuite:MimeType", attachment.MimeType } } .Where(kv => !string.IsNullOrEmpty(kv.Value)) diff --git a/proprietary/GoogleWorkspace/SourceItems/CalendarEventFileSourceEntry.cs b/proprietary/GoogleWorkspace/SourceItems/CalendarEventFileSourceEntry.cs index bcc334f76..13c1a70b8 100644 --- a/proprietary/GoogleWorkspace/SourceItems/CalendarEventFileSourceEntry.cs +++ b/proprietary/GoogleWorkspace/SourceItems/CalendarEventFileSourceEntry.cs @@ -56,7 +56,7 @@ internal class CalendarEventFileSourceEntry(string parentPath, Event evt) { "gsuite:v", "1" }, { "gsuite:Type", SourceItemType.CalendarEvent.ToString() }, { "gsuite:Name", "event.ics" }, - { "gsuite:id", evt.Id }, + { "gsuite:Id", evt.Id }, { "gsuite:HtmlLink", evt.HtmlLink } } .Where(kv => !string.IsNullOrEmpty(kv.Value)) diff --git a/proprietary/GoogleWorkspace/SourceItems/CalendarEventSourceEntry.cs b/proprietary/GoogleWorkspace/SourceItems/CalendarEventSourceEntry.cs index 8a6e88f01..396ba773a 100644 --- a/proprietary/GoogleWorkspace/SourceItems/CalendarEventSourceEntry.cs +++ b/proprietary/GoogleWorkspace/SourceItems/CalendarEventSourceEntry.cs @@ -32,7 +32,7 @@ internal class CalendarEventSourceEntry(SourceProvider provider, string parentPa { "gsuite:v", "1" }, { "gsuite:Type", SourceItemType.CalendarEvent.ToString() }, { "gsuite:Name", evt.Summary ?? evt.Id }, - { "gsuite:id", evt.Id }, + { "gsuite:Id", evt.Id }, { "gsuite:HtmlLink", evt.HtmlLink } } .Where(kv => !string.IsNullOrEmpty(kv.Value)) diff --git a/proprietary/GoogleWorkspace/SourceItems/CalendarSourceEntry.cs b/proprietary/GoogleWorkspace/SourceItems/CalendarSourceEntry.cs index 3c010ab3c..b1e12041e 100644 --- a/proprietary/GoogleWorkspace/SourceItems/CalendarSourceEntry.cs +++ b/proprietary/GoogleWorkspace/SourceItems/CalendarSourceEntry.cs @@ -49,7 +49,7 @@ internal class CalendarSourceEntry(SourceProvider provider, string parentPath, C { "gsuite:v", "1" }, { "gsuite:Type", SourceItemType.Calendar.ToString() }, { "gsuite:Name", calendar.SummaryOverride ?? calendar.Summary }, - { "gsuite:id", calendar.Id }, + { "gsuite:Id", calendar.Id }, { "gsuite:Description", calendar.Description } } .Where(kv => !string.IsNullOrEmpty(kv.Value)) diff --git a/proprietary/GoogleWorkspace/SourceItems/ChatAttachmentSourceEntry.cs b/proprietary/GoogleWorkspace/SourceItems/ChatAttachmentSourceEntry.cs index 072a1dbec..4a59e2e9b 100644 --- a/proprietary/GoogleWorkspace/SourceItems/ChatAttachmentSourceEntry.cs +++ b/proprietary/GoogleWorkspace/SourceItems/ChatAttachmentSourceEntry.cs @@ -35,7 +35,7 @@ internal class ChatAttachmentSourceEntry(string parentPath, Attachment attachmen { "gsuite:v", "1" }, { "gsuite:Type", SourceItemType.ChatAttachment.ToString() }, { "gsuite:Name", attachment.ContentName ?? attachment.Name.Split('/').Last() }, - { "gsuite:id", attachment.Name }, + { "gsuite:Id", attachment.Name }, { "gsuite:ContentType", attachment.ContentType } } .Where(kv => !string.IsNullOrEmpty(kv.Value)) diff --git a/proprietary/GoogleWorkspace/SourceItems/ChatMessageFileSourceEntry.cs b/proprietary/GoogleWorkspace/SourceItems/ChatMessageFileSourceEntry.cs index f21fd2d99..137e51010 100644 --- a/proprietary/GoogleWorkspace/SourceItems/ChatMessageFileSourceEntry.cs +++ b/proprietary/GoogleWorkspace/SourceItems/ChatMessageFileSourceEntry.cs @@ -26,7 +26,7 @@ internal class ChatMessageFileSourceEntry(string parentPath, Message message) { "gsuite:v", "1" }, { "gsuite:Type", SourceItemType.ChatMessage.ToString() }, { "gsuite:Name", "message.json" }, - { "gsuite:id", message.Name } + { "gsuite:Id", message.Name } } .Where(kv => !string.IsNullOrEmpty(kv.Value)) .ToDictionary(kv => kv.Key, kv => kv.Value)); diff --git a/proprietary/GoogleWorkspace/SourceItems/ChatMessageSourceEntry.cs b/proprietary/GoogleWorkspace/SourceItems/ChatMessageSourceEntry.cs index ac963c492..970d35b1f 100644 --- a/proprietary/GoogleWorkspace/SourceItems/ChatMessageSourceEntry.cs +++ b/proprietary/GoogleWorkspace/SourceItems/ChatMessageSourceEntry.cs @@ -34,7 +34,7 @@ internal class ChatMessageSourceEntry(string parentPath, Message message) { "gsuite:v", "1" }, { "gsuite:Type", SourceItemType.ChatMessage.ToString() }, { "gsuite:Name", message.Name }, - { "gsuite:id", message.Name } + { "gsuite:Id", message.Name } } .Where(kv => !string.IsNullOrEmpty(kv.Value)) .ToDictionary(kv => kv.Key, kv => kv.Value)); diff --git a/proprietary/GoogleWorkspace/SourceItems/ChatSourceEntry.cs b/proprietary/GoogleWorkspace/SourceItems/ChatSourceEntry.cs index 9f6240790..5ba7230bc 100644 --- a/proprietary/GoogleWorkspace/SourceItems/ChatSourceEntry.cs +++ b/proprietary/GoogleWorkspace/SourceItems/ChatSourceEntry.cs @@ -40,7 +40,7 @@ internal class ChatSourceEntry(SourceProvider provider, string parentPath) { "gsuite:v", "1" }, { "gsuite:Type", SourceItemType.UserChat.ToString() }, { "gsuite:Name", "Chat" }, - { "gsuite:id", "Chat" } + { "gsuite:Id", "Chat" } } .Where(kv => !string.IsNullOrEmpty(kv.Value)) .ToDictionary(kv => kv.Key, kv => kv.Value)); diff --git a/proprietary/GoogleWorkspace/SourceItems/ChatSpaceSourceEntry.cs b/proprietary/GoogleWorkspace/SourceItems/ChatSpaceSourceEntry.cs index afb1b7f1b..9f3303ab9 100644 --- a/proprietary/GoogleWorkspace/SourceItems/ChatSpaceSourceEntry.cs +++ b/proprietary/GoogleWorkspace/SourceItems/ChatSpaceSourceEntry.cs @@ -41,7 +41,7 @@ internal class ChatSpaceSourceEntry(SourceProvider provider, string parentPath, { "gsuite:v", "1" }, { "gsuite:Type", SourceItemType.ChatSpace.ToString() }, { "gsuite:Name", space.DisplayName ?? space.Name }, - { "gsuite:id", space.Name }, + { "gsuite:Id", space.Name }, { "gsuite:SpaceType", space.Type } } .Where(kv => !string.IsNullOrEmpty(kv.Value)) diff --git a/proprietary/GoogleWorkspace/SourceItems/ContactFileSourceEntry.cs b/proprietary/GoogleWorkspace/SourceItems/ContactFileSourceEntry.cs index 20e4eaa67..f5ecb3a29 100644 --- a/proprietary/GoogleWorkspace/SourceItems/ContactFileSourceEntry.cs +++ b/proprietary/GoogleWorkspace/SourceItems/ContactFileSourceEntry.cs @@ -54,7 +54,7 @@ internal class ContactFileSourceEntry(string parentPath, Person person) { "gsuite:v", "1" }, { "gsuite:Type", SourceItemType.Contact.ToString() }, { "gsuite:Name", person.Names?.FirstOrDefault()?.DisplayName ?? person.ResourceName }, - { "gsuite:id", person.ResourceName }, + { "gsuite:Id", person.ResourceName }, { "gsuite:Etag", person.ETag } } .Where(kv => !string.IsNullOrEmpty(kv.Value)) diff --git a/proprietary/GoogleWorkspace/SourceItems/ContactGroupSourceEntry.cs b/proprietary/GoogleWorkspace/SourceItems/ContactGroupSourceEntry.cs index 17e2debef..c19e403c9 100644 --- a/proprietary/GoogleWorkspace/SourceItems/ContactGroupSourceEntry.cs +++ b/proprietary/GoogleWorkspace/SourceItems/ContactGroupSourceEntry.cs @@ -24,7 +24,7 @@ internal class ContactGroupSourceEntry(string parentPath, ContactGroup group) { "gsuite:v", "1" }, { "gsuite:Type", SourceItemType.ContactGroup.ToString() }, { "gsuite:Name", group.FormattedName ?? group.Name }, - { "gsuite:id", group.ResourceName }, + { "gsuite:Id", group.ResourceName }, { "gsuite:Etag", group.ETag } } .Where(kv => !string.IsNullOrEmpty(kv.Value)) diff --git a/proprietary/GoogleWorkspace/SourceItems/ContactGroupsFolderSourceEntry.cs b/proprietary/GoogleWorkspace/SourceItems/ContactGroupsFolderSourceEntry.cs index e2d9f8464..211899f6d 100644 --- a/proprietary/GoogleWorkspace/SourceItems/ContactGroupsFolderSourceEntry.cs +++ b/proprietary/GoogleWorkspace/SourceItems/ContactGroupsFolderSourceEntry.cs @@ -40,7 +40,7 @@ internal class ContactGroupsFolderSourceEntry(SourceProvider provider, string pa { "gsuite:v", "1" }, { "gsuite:Type", SourceItemType.ContactGroup.ToString() }, // Or UserContactGroups? { "gsuite:Name", "Groups" }, - { "gsuite:id", "Groups" } + { "gsuite:Id", "Groups" } } .Where(kv => !string.IsNullOrEmpty(kv.Value)) .ToDictionary(kv => kv.Key, kv => kv.Value)); diff --git a/proprietary/GoogleWorkspace/SourceItems/ContactSourceEntry.cs b/proprietary/GoogleWorkspace/SourceItems/ContactSourceEntry.cs index 4a0a49d2f..dcd9fc2d8 100644 --- a/proprietary/GoogleWorkspace/SourceItems/ContactSourceEntry.cs +++ b/proprietary/GoogleWorkspace/SourceItems/ContactSourceEntry.cs @@ -35,7 +35,7 @@ internal class ContactSourceEntry(string parentPath, Person person) { "gsuite:v", "1" }, { "gsuite:Type", SourceItemType.Contact.ToString() }, { "gsuite:Name", person.Names?.FirstOrDefault()?.DisplayName ?? person.ResourceName }, - { "gsuite:id", person.ResourceName }, + { "gsuite:Id", person.ResourceName }, { "gsuite:Etag", person.ETag } } .Where(kv => !string.IsNullOrEmpty(kv.Value)) diff --git a/proprietary/GoogleWorkspace/SourceItems/ContactsFolderSourceEntry.cs b/proprietary/GoogleWorkspace/SourceItems/ContactsFolderSourceEntry.cs index 6b2395cb4..c7af2f8c2 100644 --- a/proprietary/GoogleWorkspace/SourceItems/ContactsFolderSourceEntry.cs +++ b/proprietary/GoogleWorkspace/SourceItems/ContactsFolderSourceEntry.cs @@ -41,7 +41,7 @@ internal class ContactsFolderSourceEntry(SourceProvider provider, string parentP { "gsuite:v", "1" }, { "gsuite:Type", SourceItemType.UserContacts.ToString() }, { "gsuite:Name", "Contacts" }, - { "gsuite:id", "Contacts" } + { "gsuite:Id", "Contacts" } } .Where(kv => !string.IsNullOrEmpty(kv.Value)) .ToDictionary(kv => kv.Key, kv => kv.Value)); diff --git a/proprietary/GoogleWorkspace/SourceItems/DriveFileCommentsSourceEntry.cs b/proprietary/GoogleWorkspace/SourceItems/DriveFileCommentsSourceEntry.cs index 813bc14aa..43ea9f0a7 100644 --- a/proprietary/GoogleWorkspace/SourceItems/DriveFileCommentsSourceEntry.cs +++ b/proprietary/GoogleWorkspace/SourceItems/DriveFileCommentsSourceEntry.cs @@ -29,7 +29,7 @@ internal class DriveFileCommentsSourceEntry(SourceProvider provider, string pare { "gsuite:v", "1" }, { "gsuite:Type", SourceItemType.DriveFileComment.ToString() }, { "gsuite:Name", "comments.json" }, - { "gsuite:id", file.Id } + { "gsuite:Id", file.Id } } .Where(kv => !string.IsNullOrEmpty(kv.Value)) .ToDictionary(kv => kv.Key, kv => kv.Value)); diff --git a/proprietary/GoogleWorkspace/SourceItems/DriveFileContentSourceEntry.cs b/proprietary/GoogleWorkspace/SourceItems/DriveFileContentSourceEntry.cs index cbbe163a5..72aba3a85 100644 --- a/proprietary/GoogleWorkspace/SourceItems/DriveFileContentSourceEntry.cs +++ b/proprietary/GoogleWorkspace/SourceItems/DriveFileContentSourceEntry.cs @@ -14,9 +14,9 @@ internal class DriveFileContentSourceEntry(SourceProvider provider, string paren { var service = provider.ApiHelper.GetDriveService(); - if (IsGoogleDoc(file.MimeType)) + if (GoogleMimeTypes.IsGoogleDoc(file.MimeType)) { - var exportMimeType = GetExportMimeType(file.MimeType); + var exportMimeType = GoogleMimeTypes.GetExportMimeType(file.MimeType); var request = service.Files.Export(file.Id, exportMimeType); var stream = new MemoryStream(); await request.DownloadAsync(stream, cancellationToken); @@ -33,25 +33,6 @@ internal class DriveFileContentSourceEntry(SourceProvider provider, string paren } } - private static bool IsGoogleDoc(string mimeType) - { - return mimeType.StartsWith("application/vnd.google-apps.") && - mimeType != "application/vnd.google-apps.folder" && - mimeType != "application/vnd.google-apps.shortcut"; - } - - private static string GetExportMimeType(string mimeType) - { - return mimeType switch - { - "application/vnd.google-apps.document" => "application/vnd.openxmlformats-officedocument.wordprocessingml.document", - "application/vnd.google-apps.spreadsheet" => "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", - "application/vnd.google-apps.presentation" => "application/vnd.openxmlformats-officedocument.presentationml.presentation", - "application/vnd.google-apps.script" => "application/vnd.google-apps.script+json", - _ => "application/pdf" - }; - } - public override Task> GetMinorMetadata(CancellationToken cancellationToken) { return Task.FromResult(new Dictionary @@ -59,7 +40,7 @@ internal class DriveFileContentSourceEntry(SourceProvider provider, string paren { "gsuite:v", "1" }, { "gsuite:Type", SourceItemType.DriveFileContent.ToString() }, { "gsuite:Name", "content" }, - { "gsuite:id", file.Id }, + { "gsuite:Id", file.Id }, { "gsuite:MimeType", file.MimeType } } .Where(kv => !string.IsNullOrEmpty(kv.Value)) diff --git a/proprietary/GoogleWorkspace/SourceItems/DriveFileMetadataSourceEntry.cs b/proprietary/GoogleWorkspace/SourceItems/DriveFileMetadataSourceEntry.cs index 562a58317..28f63325f 100644 --- a/proprietary/GoogleWorkspace/SourceItems/DriveFileMetadataSourceEntry.cs +++ b/proprietary/GoogleWorkspace/SourceItems/DriveFileMetadataSourceEntry.cs @@ -24,7 +24,7 @@ internal class DriveFileMetadataSourceEntry(string parentPath, File file) { "gsuite:v", "1" }, { "gsuite:Type", SourceItemType.DriveFileMetadata.ToString() }, { "gsuite:Name", "metadata.json" }, - { "gsuite:id", file.Id } + { "gsuite:Id", file.Id } } .Where(kv => !string.IsNullOrEmpty(kv.Value)) .ToDictionary(kv => kv.Key, kv => kv.Value)); diff --git a/proprietary/GoogleWorkspace/SourceItems/DriveFilePermissionsSourceEntry.cs b/proprietary/GoogleWorkspace/SourceItems/DriveFilePermissionsSourceEntry.cs index b55b51a21..7d61c7386 100644 --- a/proprietary/GoogleWorkspace/SourceItems/DriveFilePermissionsSourceEntry.cs +++ b/proprietary/GoogleWorkspace/SourceItems/DriveFilePermissionsSourceEntry.cs @@ -28,7 +28,7 @@ internal class DriveFilePermissionsSourceEntry(SourceProvider provider, string p { "gsuite:v", "1" }, { "gsuite:Type", SourceItemType.DrivePermission.ToString() }, { "gsuite:Name", "permissions.json" }, - { "gsuite:id", file.Id } + { "gsuite:Id", file.Id } } .Where(kv => !string.IsNullOrEmpty(kv.Value)) .ToDictionary(kv => kv.Key, kv => kv.Value)); diff --git a/proprietary/GoogleWorkspace/SourceItems/DriveFileRevisionContentSourceEntry.cs b/proprietary/GoogleWorkspace/SourceItems/DriveFileRevisionContentSourceEntry.cs index ed0d1df45..d86b542a8 100644 --- a/proprietary/GoogleWorkspace/SourceItems/DriveFileRevisionContentSourceEntry.cs +++ b/proprietary/GoogleWorkspace/SourceItems/DriveFileRevisionContentSourceEntry.cs @@ -16,9 +16,9 @@ internal class DriveFileRevisionContentSourceEntry(SourceProvider provider, stri var service = provider.ApiHelper.GetDriveService(); var url = $"https://www.googleapis.com/drive/v3/files/{file.Id}/revisions/{revision.Id}?alt=media"; - if (IsGoogleDoc(file.MimeType)) + if (GoogleMimeTypes.IsGoogleDoc(file.MimeType)) { - var exportMimeType = GetExportMimeType(file.MimeType); + var exportMimeType = GoogleMimeTypes.GetExportMimeType(file.MimeType); if (revision.ExportLinks != null && revision.ExportLinks.ContainsKey(exportMimeType)) { url = revision.ExportLinks[exportMimeType]; @@ -49,25 +49,6 @@ internal class DriveFileRevisionContentSourceEntry(SourceProvider provider, stri throw new FileNotFoundException($"Cannot download revision: {response.StatusCode}"); } - private static bool IsGoogleDoc(string mimeType) - { - return mimeType.StartsWith("application/vnd.google-apps.") && - mimeType != "application/vnd.google-apps.folder" && - mimeType != "application/vnd.google-apps.shortcut"; - } - - private static string GetExportMimeType(string mimeType) - { - return mimeType switch - { - "application/vnd.google-apps.document" => "application/vnd.openxmlformats-officedocument.wordprocessingml.document", - "application/vnd.google-apps.spreadsheet" => "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", - "application/vnd.google-apps.presentation" => "application/vnd.openxmlformats-officedocument.presentationml.presentation", - "application/vnd.google-apps.script" => "application/vnd.google-apps.script+json", - _ => "application/pdf" - }; - } - public override Task> GetMinorMetadata(CancellationToken cancellationToken) { return Task.FromResult(new Dictionary @@ -75,7 +56,7 @@ internal class DriveFileRevisionContentSourceEntry(SourceProvider provider, stri { "gsuite:v", "1" }, { "gsuite:Type", SourceItemType.DriveFileRevision.ToString() }, { "gsuite:Name", revision.Id }, - { "gsuite:id", revision.Id }, + { "gsuite:Id", revision.Id }, { "gsuite:MimeType", revision.MimeType } } .Where(kv => !string.IsNullOrEmpty(kv.Value)) diff --git a/proprietary/GoogleWorkspace/SourceItems/DriveFileRevisionsSourceEntry.cs b/proprietary/GoogleWorkspace/SourceItems/DriveFileRevisionsSourceEntry.cs index 0d1b6a56b..bef2e4668 100644 --- a/proprietary/GoogleWorkspace/SourceItems/DriveFileRevisionsSourceEntry.cs +++ b/proprietary/GoogleWorkspace/SourceItems/DriveFileRevisionsSourceEntry.cs @@ -33,7 +33,7 @@ internal class DriveFileRevisionsSourceEntry(SourceProvider provider, string par { "gsuite:v", "1" }, { "gsuite:Type", SourceItemType.DriveFileRevision.ToString() }, // Folder { "gsuite:Name", "Revisions" }, - { "gsuite:id", file.Id + "/revisions" } + { "gsuite:Id", file.Id + "/revisions" } } .Where(kv => !string.IsNullOrEmpty(kv.Value)) .ToDictionary(kv => kv.Key, kv => kv.Value)); diff --git a/proprietary/GoogleWorkspace/SourceItems/DriveFileSourceEntry.cs b/proprietary/GoogleWorkspace/SourceItems/DriveFileSourceEntry.cs index 0e3b37e88..08bd6e6aa 100644 --- a/proprietary/GoogleWorkspace/SourceItems/DriveFileSourceEntry.cs +++ b/proprietary/GoogleWorkspace/SourceItems/DriveFileSourceEntry.cs @@ -35,7 +35,7 @@ internal class DriveFileSourceEntry(SourceProvider provider, string parentPath, { "gsuite:v", "1" }, { "gsuite:Type", SourceItemType.DriveFile.ToString() }, { "gsuite:Name", file.Name }, - { "gsuite:id", file.Id }, + { "gsuite:Id", file.Id }, { "gsuite:MimeType", file.MimeType } } .Where(kv => !string.IsNullOrEmpty(kv.Value)) diff --git a/proprietary/GoogleWorkspace/SourceItems/DriveFolderSourceEntry.cs b/proprietary/GoogleWorkspace/SourceItems/DriveFolderSourceEntry.cs index 6600fedd3..29c9287bc 100644 --- a/proprietary/GoogleWorkspace/SourceItems/DriveFolderSourceEntry.cs +++ b/proprietary/GoogleWorkspace/SourceItems/DriveFolderSourceEntry.cs @@ -29,7 +29,7 @@ internal class DriveFolderSourceEntry(SourceProvider provider, string userId, st { if (cancellationToken.IsCancellationRequested) yield break; - if (file.MimeType == "application/vnd.google-apps.folder") + if (file.MimeType == GoogleMimeTypes.Folder) { yield return new DriveFolderSourceEntry(provider, userId, this.Path, file.Name, file.Id); } @@ -50,7 +50,7 @@ internal class DriveFolderSourceEntry(SourceProvider provider, string userId, st { "gsuite:v", "1" }, { "gsuite:Type", SourceItemType.DriveFolder.ToString() }, { "gsuite:Name", name }, - { "gsuite:id", folderId } + { "gsuite:Id", folderId } } .Where(kv => !string.IsNullOrEmpty(kv.Value)) .ToDictionary(kv => kv.Key, kv => kv.Value)); diff --git a/proprietary/GoogleWorkspace/SourceItems/DriveSourceEntry.cs b/proprietary/GoogleWorkspace/SourceItems/DriveSourceEntry.cs index 6149a6bd3..9c41ef1db 100644 --- a/proprietary/GoogleWorkspace/SourceItems/DriveSourceEntry.cs +++ b/proprietary/GoogleWorkspace/SourceItems/DriveSourceEntry.cs @@ -25,7 +25,7 @@ internal class DriveSourceEntry(SourceProvider provider, string userId, string p { "gsuite:v", "1" }, { "gsuite:Type", SourceItemType.Drive.ToString() }, { "gsuite:Name", "Drive" }, - { "gsuite:id", "Drive" } + { "gsuite:Id", "Drive" } } .Where(kv => !string.IsNullOrEmpty(kv.Value)) .ToDictionary(kv => kv.Key, kv => kv.Value)); diff --git a/proprietary/GoogleWorkspace/SourceItems/GmailLabelSourceEntry.cs b/proprietary/GoogleWorkspace/SourceItems/GmailLabelSourceEntry.cs index 7c95a4c89..ac1668454 100644 --- a/proprietary/GoogleWorkspace/SourceItems/GmailLabelSourceEntry.cs +++ b/proprietary/GoogleWorkspace/SourceItems/GmailLabelSourceEntry.cs @@ -72,7 +72,7 @@ internal class GmailLabelSourceEntry(SourceProvider provider, string userId, str { "gsuite:v", "1" }, { "gsuite:Type", SourceItemType.GmailLabel.ToString() }, { "gsuite:Name", label.Name }, - { "gsuite:id", label.Id }, + { "gsuite:Id", label.Id }, { "gsuite:LabelType", label.Type } } .Where(kv => !string.IsNullOrEmpty(kv.Value)) diff --git a/proprietary/GoogleWorkspace/SourceItems/GmailMessageSourceEntry.cs b/proprietary/GoogleWorkspace/SourceItems/GmailMessageSourceEntry.cs index 668171ec6..3fbe8a4e8 100644 --- a/proprietary/GoogleWorkspace/SourceItems/GmailMessageSourceEntry.cs +++ b/proprietary/GoogleWorkspace/SourceItems/GmailMessageSourceEntry.cs @@ -43,7 +43,7 @@ internal class GmailMessageSourceEntry(SourceProvider provider, string userId, s { "gsuite:v", "1" }, { "gsuite:Type", SourceItemType.GmailMessage.ToString() }, { "gsuite:Name", string.IsNullOrWhiteSpace(subject) ? message.Id : subject }, - { "gsuite:id", message.Id }, + { "gsuite:Id", message.Id }, { "gsuite:ThreadId", message.ThreadId }, { "gsuite:Snippet", message.Snippet }, } diff --git a/proprietary/GoogleWorkspace/SourceItems/GmailSettingFileSourceEntry.cs b/proprietary/GoogleWorkspace/SourceItems/GmailSettingFileSourceEntry.cs index 8f534b7cb..2b08dae90 100644 --- a/proprietary/GoogleWorkspace/SourceItems/GmailSettingFileSourceEntry.cs +++ b/proprietary/GoogleWorkspace/SourceItems/GmailSettingFileSourceEntry.cs @@ -57,7 +57,7 @@ internal class GmailSettingFileSourceEntry(SourceProvider provider, string userI { "gsuite:v", "1" }, { "gsuite:Type", type.ToString() }, { "gsuite:Name", filename }, - { "gsuite:id", filename } + { "gsuite:Id", filename } } .Where(kv => !string.IsNullOrEmpty(kv.Value)) .ToDictionary(kv => kv.Key, kv => kv.Value)); diff --git a/proprietary/GoogleWorkspace/SourceItems/GmailSettingsSourceEntry.cs b/proprietary/GoogleWorkspace/SourceItems/GmailSettingsSourceEntry.cs index 4cdc750aa..a19e70afe 100644 --- a/proprietary/GoogleWorkspace/SourceItems/GmailSettingsSourceEntry.cs +++ b/proprietary/GoogleWorkspace/SourceItems/GmailSettingsSourceEntry.cs @@ -32,7 +32,7 @@ internal class GmailSettingsSourceEntry(SourceProvider provider, string userId, { "gsuite:v", "1" }, { "gsuite:Type", SourceItemType.GmailSettings.ToString() }, { "gsuite:Name", "Settings" }, - { "gsuite:id", "Settings" } + { "gsuite:Id", "Settings" } } .Where(kv => !string.IsNullOrEmpty(kv.Value)) .ToDictionary(kv => kv.Key, kv => kv.Value)); diff --git a/proprietary/GoogleWorkspace/SourceItems/GroupMembersSourceEntry.cs b/proprietary/GoogleWorkspace/SourceItems/GroupMembersSourceEntry.cs index 5633e1a75..f484c926c 100644 --- a/proprietary/GoogleWorkspace/SourceItems/GroupMembersSourceEntry.cs +++ b/proprietary/GoogleWorkspace/SourceItems/GroupMembersSourceEntry.cs @@ -41,7 +41,7 @@ internal class GroupMembersSourceEntry(SourceProvider provider, string parentPat { "gsuite:v", "1" }, { "gsuite:Type", SourceItemType.GroupMember.ToString() }, { "gsuite:Name", "members.json" }, - { "gsuite:id", groupEmail } + { "gsuite:Id", groupEmail } } .Where(kv => !string.IsNullOrEmpty(kv.Value)) .ToDictionary(kv => kv.Key, kv => kv.Value)); diff --git a/proprietary/GoogleWorkspace/SourceItems/GroupSettingsSourceEntry.cs b/proprietary/GoogleWorkspace/SourceItems/GroupSettingsSourceEntry.cs index 5a74700e4..d8cc66d1d 100644 --- a/proprietary/GoogleWorkspace/SourceItems/GroupSettingsSourceEntry.cs +++ b/proprietary/GoogleWorkspace/SourceItems/GroupSettingsSourceEntry.cs @@ -27,7 +27,7 @@ internal class GroupSettingsSourceEntry(SourceProvider provider, string parentPa { "gsuite:v", "1" }, { "gsuite:Type", SourceItemType.GroupSettings.ToString() }, { "gsuite:Name", "settings.json" }, - { "gsuite:id", groupEmail } + { "gsuite:Id", groupEmail } } .Where(kv => !string.IsNullOrEmpty(kv.Value)) .ToDictionary(kv => kv.Key, kv => kv.Value)); diff --git a/proprietary/GoogleWorkspace/SourceItems/GroupSourceEntry.cs b/proprietary/GoogleWorkspace/SourceItems/GroupSourceEntry.cs index db2a8bec8..138732735 100644 --- a/proprietary/GoogleWorkspace/SourceItems/GroupSourceEntry.cs +++ b/proprietary/GoogleWorkspace/SourceItems/GroupSourceEntry.cs @@ -26,7 +26,7 @@ internal class GroupSourceEntry(SourceProvider provider, string parentPath, Grou { "gsuite:v", "1" }, { "gsuite:Type", SourceItemType.Group.ToString() }, { "gsuite:Name", group.Name ?? group.Email }, - { "gsuite:id", group.Id }, + { "gsuite:Id", group.Id }, { "gsuite:Email", group.Email } } .Where(kv => !string.IsNullOrEmpty(kv.Value)) diff --git a/proprietary/GoogleWorkspace/SourceItems/KeepNoteAttachmentSourceEntry.cs b/proprietary/GoogleWorkspace/SourceItems/KeepNoteAttachmentSourceEntry.cs index 9341d6cbd..daaa8e3c7 100644 --- a/proprietary/GoogleWorkspace/SourceItems/KeepNoteAttachmentSourceEntry.cs +++ b/proprietary/GoogleWorkspace/SourceItems/KeepNoteAttachmentSourceEntry.cs @@ -38,7 +38,7 @@ internal class KeepNoteAttachmentSourceEntry(SourceProvider provider, string par { "gsuite:v", "1" }, { "gsuite:Type", SourceItemType.KeepNoteAttachment.ToString() }, { "gsuite:Name", attachment.Name.Split('/').Last() }, - { "gsuite:id", attachment.Name }, + { "gsuite:Id", attachment.Name }, { "gsuite:MimeType", attachment.MimeType != null ? string.Join(",", attachment.MimeType) : null } } .Where(kv => !string.IsNullOrEmpty(kv.Value)) diff --git a/proprietary/GoogleWorkspace/SourceItems/KeepNoteFileSourceEntry.cs b/proprietary/GoogleWorkspace/SourceItems/KeepNoteFileSourceEntry.cs index 91f74befd..faf473e4f 100644 --- a/proprietary/GoogleWorkspace/SourceItems/KeepNoteFileSourceEntry.cs +++ b/proprietary/GoogleWorkspace/SourceItems/KeepNoteFileSourceEntry.cs @@ -26,7 +26,7 @@ internal class KeepNoteFileSourceEntry(string parentPath, Note note) { "gsuite:v", "1" }, { "gsuite:Type", SourceItemType.KeepNote.ToString() }, { "gsuite:Name", "note.json" }, - { "gsuite:id", note.Name } + { "gsuite:Id", note.Name } } .Where(kv => !string.IsNullOrEmpty(kv.Value)) .ToDictionary(kv => kv.Key, kv => kv.Value)); diff --git a/proprietary/GoogleWorkspace/SourceItems/KeepNoteSourceEntry.cs b/proprietary/GoogleWorkspace/SourceItems/KeepNoteSourceEntry.cs index 9ef2d118d..54a33b54f 100644 --- a/proprietary/GoogleWorkspace/SourceItems/KeepNoteSourceEntry.cs +++ b/proprietary/GoogleWorkspace/SourceItems/KeepNoteSourceEntry.cs @@ -34,7 +34,7 @@ internal class KeepNoteSourceEntry(SourceProvider provider, string parentPath, N { "gsuite:v", "1" }, { "gsuite:Type", SourceItemType.KeepNote.ToString() }, { "gsuite:Name", note.Title ?? note.Name }, - { "gsuite:id", note.Name } + { "gsuite:Id", note.Name } } .Where(kv => !string.IsNullOrEmpty(kv.Value)) .ToDictionary(kv => kv.Key, kv => kv.Value)); diff --git a/proprietary/GoogleWorkspace/SourceItems/KeepSourceEntry.cs b/proprietary/GoogleWorkspace/SourceItems/KeepSourceEntry.cs index 25fa13657..9ad014f28 100644 --- a/proprietary/GoogleWorkspace/SourceItems/KeepSourceEntry.cs +++ b/proprietary/GoogleWorkspace/SourceItems/KeepSourceEntry.cs @@ -40,7 +40,7 @@ internal class KeepSourceEntry(SourceProvider provider, string parentPath) { "gsuite:v", "1" }, { "gsuite:Type", SourceItemType.UserKeep.ToString() }, { "gsuite:Name", "Keep" }, - { "gsuite:id", "Keep" } + { "gsuite:Id", "Keep" } } .Where(kv => !string.IsNullOrEmpty(kv.Value)) .ToDictionary(kv => kv.Key, kv => kv.Value)); diff --git a/proprietary/GoogleWorkspace/SourceItems/MetaRootSourceEntry.cs b/proprietary/GoogleWorkspace/SourceItems/MetaRootSourceEntry.cs index 3d6f58cdc..76cc20b6e 100644 --- a/proprietary/GoogleWorkspace/SourceItems/MetaRootSourceEntry.cs +++ b/proprietary/GoogleWorkspace/SourceItems/MetaRootSourceEntry.cs @@ -97,7 +97,7 @@ internal class MetaRootSourceEntry(SourceProvider provider, string parentPath, s { "gsuite:v", "1" }, { "gsuite:Type", type.ToString() }, { "gsuite:Name", System.IO.Path.GetFileName(Path) }, - { "gsuite:id", System.IO.Path.GetFileName(Path) } + { "gsuite:Id", System.IO.Path.GetFileName(Path) } } .Where(kv => !string.IsNullOrEmpty(kv.Value)) .ToDictionary(kv => kv.Key, kv => kv.Value)); diff --git a/proprietary/GoogleWorkspace/SourceItems/OrganizationalUnitsSourceEntry.cs b/proprietary/GoogleWorkspace/SourceItems/OrganizationalUnitsSourceEntry.cs index 8e08a5b2e..74f5ed838 100644 --- a/proprietary/GoogleWorkspace/SourceItems/OrganizationalUnitsSourceEntry.cs +++ b/proprietary/GoogleWorkspace/SourceItems/OrganizationalUnitsSourceEntry.cs @@ -28,7 +28,7 @@ internal class OrganizationalUnitsSourceEntry(SourceProvider provider, string pa { "gsuite:v", "1" }, { "gsuite:Type", SourceItemType.OrganizationalUnit.ToString() }, { "gsuite:Name", "organizational_units.json" }, - { "gsuite:id", "organizational_units" } + { "gsuite:Id", "organizational_units" } } .Where(kv => !string.IsNullOrEmpty(kv.Value)) .ToDictionary(kv => kv.Key, kv => kv.Value)); diff --git a/proprietary/GoogleWorkspace/SourceItems/SharedDriveMetadataSourceEntry.cs b/proprietary/GoogleWorkspace/SourceItems/SharedDriveMetadataSourceEntry.cs index 19c216b19..e241d74df 100644 --- a/proprietary/GoogleWorkspace/SourceItems/SharedDriveMetadataSourceEntry.cs +++ b/proprietary/GoogleWorkspace/SourceItems/SharedDriveMetadataSourceEntry.cs @@ -24,7 +24,7 @@ internal class SharedDriveMetadataSourceEntry(string parentPath, Drive drive) { "gsuite:v", "1" }, { "gsuite:Type", SourceItemType.DriveFileMetadata.ToString() }, // Reuse or new type? { "gsuite:Name", "metadata.json" }, - { "gsuite:id", drive.Id } + { "gsuite:Id", drive.Id } } .Where(kv => !string.IsNullOrEmpty(kv.Value)) .ToDictionary(kv => kv.Key, kv => kv.Value)); diff --git a/proprietary/GoogleWorkspace/SourceItems/SharedDrivePermissionsSourceEntry.cs b/proprietary/GoogleWorkspace/SourceItems/SharedDrivePermissionsSourceEntry.cs index d4ac65d92..3785eb7a5 100644 --- a/proprietary/GoogleWorkspace/SourceItems/SharedDrivePermissionsSourceEntry.cs +++ b/proprietary/GoogleWorkspace/SourceItems/SharedDrivePermissionsSourceEntry.cs @@ -29,7 +29,7 @@ internal class SharedDrivePermissionsSourceEntry(SourceProvider provider, string { "gsuite:v", "1" }, { "gsuite:Type", SourceItemType.DrivePermission.ToString() }, { "gsuite:Name", "permissions.json" }, - { "gsuite:id", drive.Id } + { "gsuite:Id", drive.Id } } .Where(kv => !string.IsNullOrEmpty(kv.Value)) .ToDictionary(kv => kv.Key, kv => kv.Value)); diff --git a/proprietary/GoogleWorkspace/SourceItems/SharedDriveSourceEntry.cs b/proprietary/GoogleWorkspace/SourceItems/SharedDriveSourceEntry.cs index 50af7136a..164cddc00 100644 --- a/proprietary/GoogleWorkspace/SourceItems/SharedDriveSourceEntry.cs +++ b/proprietary/GoogleWorkspace/SourceItems/SharedDriveSourceEntry.cs @@ -28,7 +28,7 @@ internal class SharedDriveSourceEntry(SourceProvider provider, string userId, st { "gsuite:v", "1" }, { "gsuite:Type", SourceItemType.SharedDrives.ToString() }, // Or specific type? { "gsuite:Name", drive.Name }, - { "gsuite:id", drive.Id } + { "gsuite:Id", drive.Id } } .Where(kv => !string.IsNullOrEmpty(kv.Value)) .ToDictionary(kv => kv.Key, kv => kv.Value)); diff --git a/proprietary/GoogleWorkspace/SourceItems/SharedDrivesSourceEntry.cs b/proprietary/GoogleWorkspace/SourceItems/SharedDrivesSourceEntry.cs index 2f30e244f..84987bb7e 100644 --- a/proprietary/GoogleWorkspace/SourceItems/SharedDrivesSourceEntry.cs +++ b/proprietary/GoogleWorkspace/SourceItems/SharedDrivesSourceEntry.cs @@ -44,7 +44,7 @@ internal class SharedDrivesSourceEntry(SourceProvider provider, string userId, s { "gsuite:v", "1" }, { "gsuite:Type", SourceItemType.SharedDrives.ToString() }, { "gsuite:Name", "Shared Drives" }, - { "gsuite:id", "Shared Drives" } + { "gsuite:Id", "Shared Drives" } } .Where(kv => !string.IsNullOrEmpty(kv.Value)) .ToDictionary(kv => kv.Key, kv => kv.Value)); diff --git a/proprietary/GoogleWorkspace/SourceItems/SiteSourceEntry.cs b/proprietary/GoogleWorkspace/SourceItems/SiteSourceEntry.cs index bd31917cc..5b5dd3274 100644 --- a/proprietary/GoogleWorkspace/SourceItems/SiteSourceEntry.cs +++ b/proprietary/GoogleWorkspace/SourceItems/SiteSourceEntry.cs @@ -26,7 +26,7 @@ internal class SiteSourceEntry(string parentPath, File file) { "gsuite:v", "1" }, { "gsuite:Type", SourceItemType.Site.ToString() }, { "gsuite:Name", file.Name }, - { "gsuite:id", file.Id }, + { "gsuite:Id", file.Id }, { "gsuite:MimeType", file.MimeType } } .Where(kv => !string.IsNullOrEmpty(kv.Value)) diff --git a/proprietary/GoogleWorkspace/SourceItems/SitesSourceEntry.cs b/proprietary/GoogleWorkspace/SourceItems/SitesSourceEntry.cs index b1aa4da5e..b99c71643 100644 --- a/proprietary/GoogleWorkspace/SourceItems/SitesSourceEntry.cs +++ b/proprietary/GoogleWorkspace/SourceItems/SitesSourceEntry.cs @@ -13,7 +13,7 @@ internal class SitesSourceEntry(SourceProvider provider, string parentPath) { var service = provider.ApiHelper.GetDriveService(); var request = service.Files.List(); - request.Q = "mimeType='application/vnd.google-apps.site' and trashed=false"; + request.Q = $"mimeType='{GoogleMimeTypes.Site}' and trashed=false"; request.SupportsAllDrives = true; request.IncludeItemsFromAllDrives = true; // Request all drives so we do not get user drives only @@ -59,7 +59,7 @@ internal class SitesSourceEntry(SourceProvider provider, string parentPath) { "gsuite:v", "1" }, { "gsuite:Type", SourceItemType.MetaRootSites.ToString() }, { "gsuite:Name", "Sites" }, - { "gsuite:id", "Sites" } + { "gsuite:Id", "Sites" } } .Where(kv => !string.IsNullOrEmpty(kv.Value)) .ToDictionary(kv => kv.Key, kv => kv.Value)); diff --git a/proprietary/GoogleWorkspace/SourceItems/TaskListSourceEntry.cs b/proprietary/GoogleWorkspace/SourceItems/TaskListSourceEntry.cs index 99781af2f..63a1c88e8 100644 --- a/proprietary/GoogleWorkspace/SourceItems/TaskListSourceEntry.cs +++ b/proprietary/GoogleWorkspace/SourceItems/TaskListSourceEntry.cs @@ -42,7 +42,7 @@ internal class TaskListSourceEntry(SourceProvider provider, string parentPath, T { "gsuite:v", "1" }, { "gsuite:Type", SourceItemType.TaskList.ToString() }, { "gsuite:Name", taskList.Title }, - { "gsuite:id", taskList.Id }, + { "gsuite:Id", taskList.Id }, { "gsuite:Updated", taskList.Updated } } .Where(kv => !string.IsNullOrEmpty(kv.Value)) diff --git a/proprietary/GoogleWorkspace/SourceItems/TaskSourceEntry.cs b/proprietary/GoogleWorkspace/SourceItems/TaskSourceEntry.cs index 75a5086f4..1019f8411 100644 --- a/proprietary/GoogleWorkspace/SourceItems/TaskSourceEntry.cs +++ b/proprietary/GoogleWorkspace/SourceItems/TaskSourceEntry.cs @@ -27,7 +27,7 @@ internal class TaskSourceEntry(string parentPath, GTask task) { "gsuite:v", "1" }, { "gsuite:Type", SourceItemType.Task.ToString() }, { "gsuite:Name", task.Title ?? task.Id }, - { "gsuite:id", task.Id }, + { "gsuite:Id", task.Id }, { "gsuite:Status", task.Status }, { "gsuite:Due", task.Due } } diff --git a/proprietary/GoogleWorkspace/SourceItems/UserProfileSourceEntry.cs b/proprietary/GoogleWorkspace/SourceItems/UserProfileSourceEntry.cs index ed2e46ce7..62f065fe4 100644 --- a/proprietary/GoogleWorkspace/SourceItems/UserProfileSourceEntry.cs +++ b/proprietary/GoogleWorkspace/SourceItems/UserProfileSourceEntry.cs @@ -27,7 +27,7 @@ internal class UserProfileSourceEntry(SourceProvider provider, string parentPath { "gsuite:v", "1" }, { "gsuite:Type", SourceItemType.UserProfile.ToString() }, { "gsuite:Name", "profile.json" }, - { "gsuite:id", userId } + { "gsuite:Id", userId } } .Where(kv => !string.IsNullOrEmpty(kv.Value)) .ToDictionary(kv => kv.Key, kv => kv.Value)); diff --git a/proprietary/GoogleWorkspace/SourceItems/UserSourceEntry.cs b/proprietary/GoogleWorkspace/SourceItems/UserSourceEntry.cs index 61bc60556..dee6bb6d1 100644 --- a/proprietary/GoogleWorkspace/SourceItems/UserSourceEntry.cs +++ b/proprietary/GoogleWorkspace/SourceItems/UserSourceEntry.cs @@ -44,7 +44,7 @@ internal class UserSourceEntry(SourceProvider provider, string parentPath, strin { "gsuite:v", "1" }, { "gsuite:Type", SourceItemType.User.ToString() }, { "gsuite:Name", userId }, - { "gsuite:id", userId } + { "gsuite:Id", userId } } .Where(kv => !string.IsNullOrEmpty(kv.Value)) .ToDictionary(kv => kv.Key, kv => kv.Value)); diff --git a/proprietary/GoogleWorkspace/SourceItems/UserTypeSourceEntry.cs b/proprietary/GoogleWorkspace/SourceItems/UserTypeSourceEntry.cs index 20c291af4..fd784a532 100644 --- a/proprietary/GoogleWorkspace/SourceItems/UserTypeSourceEntry.cs +++ b/proprietary/GoogleWorkspace/SourceItems/UserTypeSourceEntry.cs @@ -144,7 +144,7 @@ internal class UserTypeSourceEntry(SourceProvider provider, string parentPath, s { "gsuite:v", "1" }, { "gsuite:Type", type.ToString() }, { "gsuite:Name", System.IO.Path.GetFileName(Path) }, - { "gsuite:id", System.IO.Path.GetFileName(Path) } + { "gsuite:Id", System.IO.Path.GetFileName(Path) } } .Where(kv => !string.IsNullOrEmpty(kv.Value)) .ToDictionary(kv => kv.Key, kv => kv.Value));