Beispiel #1
0
 public void AddEntry(string path, string hash, FileHistoryType editType)
 => files.Add(new FileHistoryEntry
 {
     Path     = path,
     Hash     = hash,
     EditType = editType
 });
Beispiel #2
0
        public async Task <Dictionary <string, string> > GetPackageFilesAtVersionAsync(string name, string tag)
        {
            var request = new HttpRequestMessage()
            {
                RequestUri = new Uri($"packages/{name}/files", UriKind.Relative),
                Method     = HttpMethod.Get
            };

            HttpResponseMessage response = await httpClient.SendAsync(request);

            var changes = new Dictionary <string, string>();

            if (response.IsSuccessStatusCode)
            {
                string arrayJSON = await response.Content.ReadAsStringAsync();

                JArray jArray = JArray.Parse(arrayJSON);

                string prevChangeTag   = string.Empty;
                bool   stopAtTagChange = false;

                foreach (var changeEl in jArray.Reverse())
                {
                    string          changeTag  = changeEl["tag"].ToObject <string>();
                    string          path       = changeEl["filePath"].ToObject <string>();
                    string          hash       = changeEl["hash"].ToObject <string>();
                    FileHistoryType changeType = changeEl["changeType"].ToObject <FileHistoryType>();

                    if (changeTag != prevChangeTag && stopAtTagChange)
                    {
                        break;
                    }

                    switch (changeType)
                    {
                    case FileHistoryType.Added:
                    case FileHistoryType.Modified:
                        if (changes.ContainsKey(path))
                        {
                            changes[path] = hash;
                        }
                        else
                        {
                            changes.Add(path, hash);
                        }
                        break;

                    case FileHistoryType.Deleted:
                        if (changes.ContainsKey(path))
                        {
                            changes.Remove(path);
                        }
                        break;

                    default:
                        break;
                    }
                    prevChangeTag = changeTag;

                    if (changeTag == tag)
                    {
                        stopAtTagChange = true;
                    }
                }
                return(changes);
            }
            return(new Dictionary <string, string>());
        }