public async Task CreateSessionTokenAsync()

in CredentialProvider.Microsoft/CredentialProviders/Vsts/VstsSessionTokenClient.cs [30:75]


        public async Task<string> CreateSessionTokenAsync(VstsTokenType tokenType, DateTime validTo, CancellationToken cancellationToken)
        {
            var spsEndpoint = await authUtil.GetAuthorizationEndpoint(vstsUri, cancellationToken);
            if (spsEndpoint == null)
            {
                return null;
            }

            using (var httpClient = new HttpClient())
            {
                httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", bearerToken);

                foreach (var userAgent in Program.UserAgent)
                {
                    httpClient.DefaultRequestHeaders.UserAgent.Add(userAgent);
                }

                var content = new StringContent(
                    JsonConvert.SerializeObject(
                        new VstsSessionToken()
                        {
                            DisplayName = "Azure DevOps Artifacts Credential Provider",
                            Scope = TokenScope,
                            ValidTo = validTo
                        }),
                    Encoding.UTF8,
                    "application/json");

                var uriBuilder = new UriBuilder(spsEndpoint)
                {
                    Query = $"tokenType={tokenType}&api-version=5.0-preview.1"
                };

                uriBuilder.Path = uriBuilder.Path.TrimEnd('/') + "/_apis/Token/SessionTokens";

                using (var response = await httpClient.PostAsync(uriBuilder.Uri, content, cancellationToken))
                {
                    response.EnsureSuccessStatusCode();
                    var serializedResponse = await response.Content.ReadAsStringAsync();
                    var responseToken = JsonConvert.DeserializeObject<VstsSessionToken>(serializedResponse);

                    return responseToken.Token;
                }
            }
        }