public static async Task <VssConnection> GetVssConnectionAsync(Uri uri, string accessToken, DelegatingHandler retryOnTimeoutMessageHandler = null) { VssConnection connection; if (!_vssConnections.TryGetValue(uri, out connection)) { VssClientCredentials cred = GetCredentials(accessToken); VssClientHttpRequestSettings settings = VssClientHttpRequestSettings.Default.Clone(); if (settings.SendTimeout < _minTimeout) { settings.SendTimeout = _minTimeout; } VssHttpMessageHandler innerHandler = new VssHttpMessageHandler(cred, settings); DelegatingHandler[] handlers = new DelegatingHandler[] { retryOnTimeoutMessageHandler }; connection = new VssConnection(uri, innerHandler, handlers); await connection.ConnectAsync().ConfigureAwait(false); if (!_vssConnections.TryAdd(uri, connection)) { // first writer wins. Every caller returned the same instance. connection = _vssConnections[uri]; } } return(connection); }
public static VssConnection CreateConnection(Uri serverUri, VssCredentials credentials) { VssClientHttpRequestSettings settings = VssClientHttpRequestSettings.Default.Clone(); settings.MaxRetryRequest = 5; var headerValues = new List <ProductInfoHeaderValue>(); #if OS_WINDOWS headerValues.Add(new ProductInfoHeaderValue("VstsAgentCore-windows", Constants.Agent.Version)); #elif OS_OSX headerValues.Add(new ProductInfoHeaderValue("VstsAgentCore-darwin", Constants.Agent.Version)); #elif OS_LINUX headerValues.Add(new ProductInfoHeaderValue("VstsAgentCore-linux", Constants.Agent.Version)); #endif headerValues.Add(new ProductInfoHeaderValue($"({RuntimeInformation.OSDescription.Trim()})")); if (settings.UserAgent != null && settings.UserAgent.Count > 0) { headerValues.AddRange(settings.UserAgent); } settings.UserAgent = headerValues; VssConnection connection = new VssConnection(serverUri, credentials, settings); return(connection); }
public static VssConnection CreateConnection(Uri serverUri, VssCredentials credentials, IEnumerable <DelegatingHandler> additionalDelegatingHandler = null, TimeSpan?timeout = null) { VssClientHttpRequestSettings settings = VssClientHttpRequestSettings.Default.Clone(); // make sure MaxRetryRequest in range [3, 10] int maxRetryRequest = AgentKnobs.HttpRetryCount.GetValue(_knobContext).AsInt(); settings.MaxRetryRequest = Math.Min(Math.Max(maxRetryRequest, 3), 10); // prefer parameter, otherwise use httpRequestTimeoutSeconds and make sure httpRequestTimeoutSeconds in range [100, 1200] int httpRequestTimeoutSeconds = AgentKnobs.HttpTimeout.GetValue(_knobContext).AsInt(); settings.SendTimeout = timeout ?? TimeSpan.FromSeconds(Math.Min(Math.Max(httpRequestTimeoutSeconds, 100), 1200)); // Remove Invariant from the list of accepted languages. // // The constructor of VssHttpRequestSettings (base class of VssClientHttpRequestSettings) adds the current // UI culture to the list of accepted languages. The UI culture will be Invariant on OSX/Linux when the // LANG environment variable is not set when the program starts. If Invariant is in the list of accepted // languages, then "System.ArgumentException: The value cannot be null or empty." will be thrown when the // settings are applied to an HttpRequestMessage. settings.AcceptLanguages.Remove(CultureInfo.InvariantCulture); VssConnection connection = new VssConnection(serverUri, new VssHttpMessageHandler(credentials, settings), additionalDelegatingHandler); return(connection); }
public static VssConnection CreateConnection(Uri serverUri, VssCredentials credentials) { VssClientHttpRequestSettings settings = VssClientHttpRequestSettings.Default.Clone(); settings.MaxRetryRequest = 5; // Remove Invariant from the list of accepted languages. // // The constructor of VssHttpRequestSettings (base class of VssClientHttpRequestSettings) adds the current // UI culture to the list of accepted languages. The UI culture will be Invariant on OSX/Linux when the // LANG environment variable is not set when the program starts. If Invariant is in the list of accepted // languages, then "System.ArgumentException: The value cannot be null or empty." will be thrown when the // settings are applied to an HttpRequestMessage. settings.AcceptLanguages.Remove(CultureInfo.InvariantCulture); var headerValues = new List <ProductInfoHeaderValue>(); headerValues.Add(new ProductInfoHeaderValue($"VstsAgentCore-{BuildConstants.AgentPackage.PackageName}", Constants.Agent.Version)); headerValues.Add(new ProductInfoHeaderValue($"({RuntimeInformation.OSDescription.Trim()})")); if (settings.UserAgent != null && settings.UserAgent.Count > 0) { headerValues.AddRange(settings.UserAgent); } settings.UserAgent = headerValues; VssConnection connection = new VssConnection(serverUri, credentials, settings); return(connection); }
public static VssConnection CreateConnection(Uri serverUri, VssCredentials credentials) { VssClientHttpRequestSettings settings = VssClientHttpRequestSettings.Default.Clone(); settings.MaxRetryRequest = 5; var headerValues = new List <ProductInfoHeaderValue>(); headerValues.Add(new ProductInfoHeaderValue("VstsAgent", Constants.Agent.Version)); VssConnection connection = new VssConnection(serverUri, credentials, settings); return(connection); }
public static VssConnection CreateConnection(Uri serverUri, VssCredentials credentials, IEnumerable <DelegatingHandler> additionalDelegatingHandler = null) { VssClientHttpRequestSettings settings = VssClientHttpRequestSettings.Default.Clone(); int maxRetryRequest; if (!int.TryParse(Environment.GetEnvironmentVariable("VSTS_HTTP_RETRY") ?? string.Empty, out maxRetryRequest)) { maxRetryRequest = 5; } // make sure MaxRetryRequest in range [5, 10] settings.MaxRetryRequest = Math.Min(Math.Max(maxRetryRequest, 5), 10); int httpRequestTimeoutSeconds; if (!int.TryParse(Environment.GetEnvironmentVariable("VSTS_HTTP_TIMEOUT") ?? string.Empty, out httpRequestTimeoutSeconds)) { httpRequestTimeoutSeconds = 100; } // make sure httpRequestTimeoutSeconds in range [100, 1200] settings.SendTimeout = TimeSpan.FromSeconds(Math.Min(Math.Max(httpRequestTimeoutSeconds, 100), 1200)); // Remove Invariant from the list of accepted languages. // // The constructor of VssHttpRequestSettings (base class of VssClientHttpRequestSettings) adds the current // UI culture to the list of accepted languages. The UI culture will be Invariant on OSX/Linux when the // LANG environment variable is not set when the program starts. If Invariant is in the list of accepted // languages, then "System.ArgumentException: The value cannot be null or empty." will be thrown when the // settings are applied to an HttpRequestMessage. settings.AcceptLanguages.Remove(CultureInfo.InvariantCulture); var headerValues = new List <ProductInfoHeaderValue>(); headerValues.Add(new ProductInfoHeaderValue($"VstsAgentCore-{BuildConstants.AgentPackage.PackageName}", Constants.Agent.Version)); headerValues.Add(new ProductInfoHeaderValue($"({RuntimeInformation.OSDescription.Trim()})")); if (settings.UserAgent != null && settings.UserAgent.Count > 0) { headerValues.AddRange(settings.UserAgent); } settings.UserAgent = headerValues; VssConnection connection = new VssConnection(serverUri, new VssHttpMessageHandler(credentials, settings), additionalDelegatingHandler); return(connection); }
/// <summary> /// /// </summary> /// <param name="location"></param> /// <param name="cancellationToken"></param> /// <returns></returns> protected virtual async Task <ILocationDataProvider> CreateDataProviderAsync( String location, CancellationToken cancellationToken = default(CancellationToken)) { VssClientHttpRequestSettings locationServiceRequestSettings = VssClientHttpRequestSettings.Default.Clone(); locationServiceRequestSettings.SendTimeout = TimeSpan.FromSeconds(30); // If not set here, the send timeout will use the default of 100 seconds, which is too long. VssConnection connection = new VssConnection(new Uri(location), m_connection.Credentials, locationServiceRequestSettings); IVssServerDataProvider dataProvider = connection.ServerDataProvider; // If this provider is connected, then we should make sure the remote provider // is also up-to-date if (m_connection.ServerDataProvider.HasConnected) { await dataProvider.ConnectAsync(ConnectOptions.None, cancellationToken).ConfigureAwait(false); } return(dataProvider); }
public static VssConnection CreateConnection(Uri serverUri, VssCredentials credentials, IEnumerable <DelegatingHandler> additionalDelegatingHandler = null, TimeSpan?timeout = null) { VssClientHttpRequestSettings settings = VssClientHttpRequestSettings.Default.Clone(); int maxRetryRequest; if (!int.TryParse(Environment.GetEnvironmentVariable("GITHUB_ACTIONS_RUNNER_HTTP_RETRY") ?? string.Empty, out maxRetryRequest)) { maxRetryRequest = 3; } // make sure MaxRetryRequest in range [3, 10] settings.MaxRetryRequest = Math.Min(Math.Max(maxRetryRequest, 3), 10); if (!int.TryParse(Environment.GetEnvironmentVariable("GITHUB_ACTIONS_RUNNER_HTTP_TIMEOUT") ?? string.Empty, out int httpRequestTimeoutSeconds)) { settings.SendTimeout = timeout ?? TimeSpan.FromSeconds(100); } else { // prefer environment variable settings.SendTimeout = TimeSpan.FromSeconds(Math.Min(Math.Max(httpRequestTimeoutSeconds, 100), 1200)); } // Remove Invariant from the list of accepted languages. // // The constructor of VssHttpRequestSettings (base class of VssClientHttpRequestSettings) adds the current // UI culture to the list of accepted languages. The UI culture will be Invariant on OSX/Linux when the // LANG environment variable is not set when the program starts. If Invariant is in the list of accepted // languages, then "System.ArgumentException: The value cannot be null or empty." will be thrown when the // settings are applied to an HttpRequestMessage. settings.AcceptLanguages.Remove(CultureInfo.InvariantCulture); VssConnection connection = new VssConnection(serverUri, new VssHttpMessageHandler(credentials, settings), additionalDelegatingHandler); return(connection); }
private static VssConnection getVssConnection() { var accessToken = "<Enter pat token>"; var collectionUrl = "<Enter your collection>"; //for example - https://dev.azure.com/<accountName>/; if (string.IsNullOrEmpty(accessToken)) { Console.WriteLine("Access Token is null or empty"); } if (string.IsNullOrEmpty(collectionUrl)) { Console.WriteLine("Collection Url is null or empty"); } VssClientHttpRequestSettings settings = VssClientHttpRequestSettings.Default.Clone(); //var vssConnection = new VssConnection(new Uri(collectionUrl), new VssOAuthAccessTokenCredential(accessToken), settings); VssBasicCredential basicCred = new VssBasicCredential("VstsAgent", accessToken); VssCredentials creds = new VssCredentials(null, basicCred, CredentialPromptType.DoNotPrompt); var vssConnection = new VssConnection(new Uri(collectionUrl), creds, settings); return(vssConnection); }
public T GetClient <T>(VssClientHttpRequestSettings settings) where T : VssHttpClientBase { var connection = new VssConnection(VssConnection.Uri, VssConnection.Credentials, settings); return(VssConnection.GetClient <T>()); }