public override Task HandleRequestAsync()

in CredentialProvider.Microsoft/CredentialProviders/VstsBuildTask/VstsBuildTaskCredentialProvider.cs [45:81]


        public override Task<GetAuthenticationCredentialsResponse> HandleRequestAsync(GetAuthenticationCredentialsRequest request, CancellationToken cancellationToken)
        {
            cancellationToken.ThrowIfCancellationRequested();

            string uriPrefixesString = Environment.GetEnvironmentVariable(EnvUtil.BuildTaskUriPrefixes);
            string accessToken = Environment.GetEnvironmentVariable(EnvUtil.BuildTaskAccessToken);

            Verbose(string.Format(Resources.IsRetry, request.IsRetry));

            string[] uriPrefixes = uriPrefixesString.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
            Verbose(Resources.BuildTaskUriPrefixes);
            foreach (var uriPrefix in uriPrefixes)
            {
                Verbose($"{uriPrefix}");
            }

            string uriString = request.Uri.AbsoluteUri;
            string matchedPrefix = uriPrefixes.FirstOrDefault(prefix => uriString.StartsWith(prefix, StringComparison.OrdinalIgnoreCase));
            Verbose(string.Format(Resources.BuildTaskMatchedPrefix, matchedPrefix != null  ? matchedPrefix : Resources.BuildTaskNoMatchingPrefixes));

            if (matchedPrefix == null)
            {
                Verbose(Resources.BuildTaskNoPrefixMatch);
                return this.GetResponse(
                    null,
                    null,
                    Resources.BuildTaskNoPrefixMatch,
                    MessageResponseCode.Error);
            }

            Verbose(string.Format(Resources.BuildTaskEndpointMatchingUrlFound, uriString));
            return this.GetResponse(
                    Username,
                    accessToken,
                    null,
                    MessageResponseCode.Success);
        }