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; }
}
}