using Umbraco.Cms.Core.Webhooks; using Umbraco.Cms.Core.Webhooks.Events; using static Umbraco.Cms.Core.DependencyInjection.WebhookEventCollectionBuilderExtensions; namespace Umbraco.Cms.Core.DependencyInjection; /// /// Extension methods for . /// public static class WebhookEventCollectionBuilderCmsExtensions { /// /// Adds the default webhook events. /// /// The builder. /// /// The builder. /// /// /// This is a special subset of webhook events that is added by default. /// public static WebhookEventCollectionBuilderCms AddDefault(this WebhookEventCollectionBuilderCms builder) { builder.Builder .Add() .Add() .Add() .Add() .Add(); return builder; } /// /// Adds all available content (including blueprint and version) webhook events. /// /// The builder. /// If set to true only adds the default webhook events instead of all available. /// /// The builder. /// public static WebhookEventCollectionBuilderCms AddContent(this WebhookEventCollectionBuilderCms builder, bool onlyDefault = false) => builder.AddContent(builder => { builder.AddDefault(); if (onlyDefault is false) { builder .AddBlueprint() .AddVersion(); } }); /// /// Adds content webhook events specified in the action. /// /// The builder. /// The content builder. /// /// The builder. /// public static WebhookEventCollectionBuilderCms AddContent(this WebhookEventCollectionBuilderCms builder, Action contentBuilder) { contentBuilder(new WebhookEventCollectionBuilderCmsContent(builder.Builder)); return builder; } /// /// Adds all available content type (document, media and member type) webhook events. /// /// The builder. /// /// The builder. /// public static WebhookEventCollectionBuilderCms AddContentType(this WebhookEventCollectionBuilderCms builder) => builder.AddContentType(builder => { builder .AddDocumentType() .AddMediaType() .AddMemberType(); }); /// /// Adds content type webhook events specified in the action. /// /// The builder. /// The content type builder. /// /// The builder. /// public static WebhookEventCollectionBuilderCms AddContentType(this WebhookEventCollectionBuilderCms builder, Action contentTypeBuilder) { contentTypeBuilder(new WebhookEventCollectionBuilderCmsContentType(builder.Builder)); return builder; } /// /// Adds the data type webhook events. /// /// The builder. /// /// The builder. /// public static WebhookEventCollectionBuilderCms AddDataType(this WebhookEventCollectionBuilderCms builder) { builder.Builder .Add() .Add() .Add(); return builder; } /// /// Adds the dictionary webhook events. /// /// The builder. /// /// The builder. /// public static WebhookEventCollectionBuilderCms AddDictionary(this WebhookEventCollectionBuilderCms builder) { builder.Builder .Add() .Add(); return builder; } /// /// Adds the domain webhook events. /// /// The builder. /// /// The builder. /// public static WebhookEventCollectionBuilderCms AddDomain(this WebhookEventCollectionBuilderCms builder) { builder.Builder .Add() .Add(); return builder; } /// /// Adds all available file (partial view, script, stylesheet and template) webhook events. /// /// The builder. /// /// The builder. /// public static WebhookEventCollectionBuilderCms AddFile(this WebhookEventCollectionBuilderCms builder) => builder.AddFile(builder => { builder .AddPartialView() .AddScript() .AddStylesheet() .AddTemplate(); }); /// /// Adds file webhook events specified in the action. /// /// The builder. /// The file builder. /// /// The builder. /// public static WebhookEventCollectionBuilderCms AddFile(this WebhookEventCollectionBuilderCms builder, Action fileBuilder) { fileBuilder(new WebhookEventCollectionBuilderCmsFile(builder.Builder)); return builder; } /// /// Adds the health check webhook events. /// /// The builder. /// /// The builder. /// public static WebhookEventCollectionBuilderCms AddHealthCheck(this WebhookEventCollectionBuilderCms builder) { builder.Builder .Add(); return builder; } /// /// Adds the language webhook events. /// /// The builder. /// /// The builder. /// public static WebhookEventCollectionBuilderCms AddLanguage(this WebhookEventCollectionBuilderCms builder) { builder.Builder .Add() .Add(); return builder; } /// /// Adds the media webhook events. /// /// The builder. /// /// The builder. /// public static WebhookEventCollectionBuilderCms AddMedia(this WebhookEventCollectionBuilderCms builder) { builder.Builder .Add() .Add() .Add() .Add() .Add(); return builder; } /// /// Adds all available member (including member role and member group) webhook events. /// /// The builder. /// If set to true only adds the default webhook events instead of all available. /// /// The builder. /// public static WebhookEventCollectionBuilderCms AddMember(this WebhookEventCollectionBuilderCms builder, bool onlyDefault = false) => builder.AddMember(builder => { builder.AddDefault(); if (onlyDefault is false) { builder .AddRoles() .AddGroup(); } }); /// /// Adds member webhook events specified in the action. /// /// The builder. /// The member builder. /// /// The builder. /// public static WebhookEventCollectionBuilderCms AddMember(this WebhookEventCollectionBuilderCms builder, Action memberBuilder) { memberBuilder(new WebhookEventCollectionBuilderCmsMember(builder.Builder)); return builder; } /// /// Adds the package webhook events. /// /// The builder. /// /// The builder. /// public static WebhookEventCollectionBuilderCms AddPackage(this WebhookEventCollectionBuilderCms builder) { builder.Builder .Add(); return builder; } /// /// Adds the public access webhook events. /// /// The builder. /// /// The builder. /// public static WebhookEventCollectionBuilderCms AddPublicAccess(this WebhookEventCollectionBuilderCms builder) { builder.Builder .Add() .Add(); return builder; } /// /// Adds the relation webhook events. /// /// The builder. /// /// The builder. /// public static WebhookEventCollectionBuilderCms AddRelation(this WebhookEventCollectionBuilderCms builder) { builder.Builder .Add() .Add(); return builder; } /// /// Adds the relation type webhook events. /// /// The builder. /// /// The builder. /// public static WebhookEventCollectionBuilderCms AddRelationType(this WebhookEventCollectionBuilderCms builder) { builder.Builder .Add() .Add(); return builder; } /// /// Adds all available user (including password, login and user group) webhook events. /// /// The builder. /// If set to true only adds the default webhook events instead of all available. /// /// The builder. /// public static WebhookEventCollectionBuilderCms AddUser(this WebhookEventCollectionBuilderCms builder, bool onlyDefault = false) => builder.AddUser(builder => { builder.AddDefault(); if (onlyDefault is false) { builder .AddPassword() .AddLogin() .AddGroup(); } }); /// /// Adds user webhook events specified in the action. /// /// The builder. /// The user builder. /// /// The builder. /// public static WebhookEventCollectionBuilderCms AddUser(this WebhookEventCollectionBuilderCms builder, Action userBuilder) { userBuilder(new WebhookEventCollectionBuilderCmsUser(builder.Builder)); return builder; } /// /// Fluent for adding CMS content specific webhook events. /// public sealed class WebhookEventCollectionBuilderCmsContent { internal WebhookEventCollectionBuilderCmsContent(WebhookEventCollectionBuilder builder) => Builder = builder; internal WebhookEventCollectionBuilder Builder { get; } } /// /// Fluent for adding CMS content type specific webhook events. /// public sealed class WebhookEventCollectionBuilderCmsContentType { internal WebhookEventCollectionBuilderCmsContentType(WebhookEventCollectionBuilder builder) => Builder = builder; internal WebhookEventCollectionBuilder Builder { get; } } /// /// Fluent for adding CMS member specific webhook events. /// public sealed class WebhookEventCollectionBuilderCmsMember { internal WebhookEventCollectionBuilderCmsMember(WebhookEventCollectionBuilder builder) => Builder = builder; internal WebhookEventCollectionBuilder Builder { get; } } /// /// Fluent for adding CMS file specific webhook events. /// public sealed class WebhookEventCollectionBuilderCmsFile { internal WebhookEventCollectionBuilderCmsFile(WebhookEventCollectionBuilder builder) => Builder = builder; internal WebhookEventCollectionBuilder Builder { get; } } /// /// Fluent for adding CMS user specific webhook events. /// public sealed class WebhookEventCollectionBuilderCmsUser { internal WebhookEventCollectionBuilderCmsUser(WebhookEventCollectionBuilder builder) => Builder = builder; internal WebhookEventCollectionBuilder Builder { get; } } }