public async Task <List <string> > GetTagsFromDockerRegistry(string imageName) { var baseUrl = "https://registry.hub.docker.com"; try { var client = new RestApiClient(baseUrl); var result = new List <string>(); var response = new DockerTagResponse { Next = baseUrl + $"/v2/repositories/{imageName}/tags/" }; while (!string.IsNullOrEmpty(response.Next) && response.Next.Contains(baseUrl)) { var jsonResp = await client.GetAsync(response.Next.Remove(0, baseUrl.Length)); response = JsonConvert.DeserializeObject <DockerTagResponse>(jsonResp); result.AddRange(response.Images.Select(image => image.Tag).ToList()); } return(result); } catch (Exception e) { throw new Exception($"Unable to retrieve tag(s): {e.Message}", e); } }
public async Task <List <string> > GetTags(string imageName = "gosha20777/test") { var baseUrl = "https://registry.hub.docker.com"; try { var client = new RestApiClient(baseUrl); var result = new List <string>(); var response = new DockerTagResponse { Next = baseUrl + $"/v2/repositories/{imageName}/tags/" }; while (!string.IsNullOrEmpty(response.Next) && response.Next.Contains(baseUrl)) { var jsonResp = await client.GetAsync(response.Next.Remove(0, baseUrl.Length)); response = JsonConvert.DeserializeObject <DockerTagResponse>(jsonResp); result.AddRange(response.Images.Select(image => image.Tag).ToList()); } var resTags = new List <string>(); foreach (var r in result) { var prefix = ""; if (IS_GPU) { prefix = $"gpu-{API_VER}."; if (r.Contains(prefix)) { resTags.Add(r.Replace(prefix, "")); } } else { prefix = $"{API_VER}."; if (!r.Contains("gpu") && r.Contains(prefix)) { resTags.Add(r.Replace(prefix, "")); } } } return(resTags); } catch (Exception e) { throw new Exception($"Unable to retrieve tag(s): {e.Message}"); } }