diff --git a/src/code/ContainerRegistryServerAPICalls.cs b/src/code/ContainerRegistryServerAPICalls.cs index d828c543d..ff3445ac3 100644 --- a/src/code/ContainerRegistryServerAPICalls.cs +++ b/src/code/ContainerRegistryServerAPICalls.cs @@ -54,6 +54,8 @@ internal class ContainerRegistryServerAPICalls : ServerApiCall const string containerRegistryRepositoryListTemplate = "https://{0}/v2/_catalog"; // 0 - registry + private string _cachedContainterRegistryToken = null; + #endregion #region Constructor @@ -68,6 +70,8 @@ public ContainerRegistryServerAPICalls(PSRepositoryInfo repository, PSCmdlet cmd Credentials = networkCredential }; + _cachedContainterRegistryToken = null; + _sessionClient = new HttpClient(handler); _sessionClient.Timeout = TimeSpan.FromMinutes(10); _sessionClient.DefaultRequestHeaders.TryAddWithoutValidation("User-Agent", userAgentString); @@ -384,6 +388,12 @@ internal string GetContainerRegistryAccessToken(bool needCatalogAccess, out Erro string tenantID = string.Empty; errRecord = null; + if (!string.IsNullOrEmpty(_cachedContainterRegistryToken)) + { + _cmdletPassedIn.WriteVerbose("Using cached container registry access token."); + return _cachedContainterRegistryToken; + } + var repositoryCredentialInfo = Repository.CredentialInfo; if (repositoryCredentialInfo != null) { @@ -445,6 +455,9 @@ internal string GetContainerRegistryAccessToken(bool needCatalogAccess, out Erro return null; } + _cmdletPassedIn.WriteVerbose("Container registry access token retrieved."); + _cachedContainterRegistryToken = containerRegistryAccessToken; + return containerRegistryAccessToken; } @@ -739,7 +752,7 @@ internal Hashtable GetContainerRegistryMetadata(string packageName, string exact { using (JsonDocument metadataJSONDoc = JsonDocument.Parse(serverPkgInfo.Metadata)) { - string pkgVersionString = String.Empty; + string pkgVersionString = String.Empty; JsonElement rootDom = metadataJSONDoc.RootElement; if (rootDom.TryGetProperty("ModuleVersion", out JsonElement pkgVersionElement))