コード例 #1
0
        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);
                }
            }
        }
コード例 #2
0
        public async Task <string> CreateSessionTokenAsync(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()
                {
                    Scope   = "vso.packaging_write",
                    ValidTo = validTo
                }),
                    Encoding.UTF8,
                    "application/json");

                using (var response = await httpClient.PostAsync(new Uri(spsEndpoint, $"/_apis/Token/SessionTokens?api-version=5.0-preview.1"), content, cancellationToken))
                {
                    response.EnsureSuccessStatusCode();
                    var serializedResponse = await response.Content.ReadAsStringAsync();

                    var responseToken = JsonConvert.DeserializeObject <VstsSessionToken>(serializedResponse);

                    return(responseToken.Token);
                }
            }
        }