CredentialProvider.Microsoft/RequestHandlers/GetOperationClaimsRequestHandler.cs (32 lines of code) (raw):

// Copyright (c) Microsoft. All rights reserved. // // Licensed under the MIT license. using System; using System.Collections.Generic; using System.Threading.Tasks; using NuGet.Protocol.Plugins; using NuGetCredentialProvider.CredentialProviders; using NuGetCredentialProvider.Logging; namespace NuGetCredentialProvider.RequestHandlers { /// <summary> /// Handles a <see cref="GetOperationClaimsRequest"/> and replies with the supported operations. /// </summary> internal class GetOperationClaimsRequestHandler : RequestHandlerBase<GetOperationClaimsRequest, GetOperationClaimsResponse> { /// <summary> /// A <see cref="GetOperationClaimsResponse"/> when a registered credential provider can provide credentials for the current request. /// </summary> private static readonly GetOperationClaimsResponse CanProvideCredentialsResponse = new GetOperationClaimsResponse(new List<OperationClaim> { OperationClaim.Authentication }); /// <summary> /// A <see cref="GetOperationClaimsResponse"/> when no registered credential providers can provide credentials for the current request. /// </summary> private static readonly GetOperationClaimsResponse EmptyGetOperationClaimsResponse = new GetOperationClaimsResponse(new List<OperationClaim>()); private readonly IReadOnlyCollection<ICredentialProvider> _credentialProviders; /// <summary> /// Initializes a new instance of the <see cref="GetOperationClaimsRequestHandler"/> class. /// </summary> /// <param name="logger">A <see cref="ILogger"/> to use for logging.</param> /// <param name="credentialProviders">An <see cref="IReadOnlyCollection{ICredentialProviders}"/> containing credential providers.</param> public GetOperationClaimsRequestHandler(ILogger logger, IReadOnlyCollection<ICredentialProvider> credentialProviders) : base(logger) { _credentialProviders = credentialProviders ?? throw new ArgumentNullException(nameof(credentialProviders)); } public override Task<GetOperationClaimsResponse> HandleRequestAsync(GetOperationClaimsRequest request) { if (request.PackageSourceRepository != null || request.ServiceIndex != null) { return Task.FromResult(EmptyGetOperationClaimsResponse); } return Task.FromResult(CanProvideCredentialsResponse); } } }