// Copyright (c) .NET Foundation. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; using System.Collections.Generic; using System.Linq; using Microsoft.AspNetCore.Http; namespace Microsoft.AspNetCore.Dispatcher { public class SimpleEndpoint : Endpoint { public SimpleEndpoint(RequestDelegate requestDelegate) : this(requestDelegate, Array.Empty(), null) { } public SimpleEndpoint(Func delegateFactory) : this(delegateFactory, Array.Empty(), null) { } public SimpleEndpoint(RequestDelegate requestDelegate, IEnumerable metadata) : this(requestDelegate, metadata, null) { } public SimpleEndpoint(Func delegateFactory, IEnumerable metadata) : this(delegateFactory, metadata, null) { } public SimpleEndpoint(RequestDelegate requestDelegate, IEnumerable metadata, string displayName) { if (metadata == null) { throw new ArgumentNullException(nameof(metadata)); } if (requestDelegate == null) { throw new ArgumentNullException(nameof(requestDelegate)); } DisplayName = displayName; Metadata = metadata.ToArray(); DelegateFactory = (next) => requestDelegate; } public SimpleEndpoint(Func delegateFactory, IEnumerable metadata, string displayName) { if (metadata == null) { throw new ArgumentNullException(nameof(metadata)); } if (delegateFactory == null) { throw new ArgumentNullException(nameof(delegateFactory)); } DisplayName = displayName; Metadata = metadata.ToArray(); DelegateFactory = delegateFactory; } public override string DisplayName { get; } public override IReadOnlyList Metadata { get; } public Func DelegateFactory { get; } } }