Esempio n. 1
0
        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);
            }
        }
Esempio n. 2
0
        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}");
            }
        }