public void AddEntry(string path, string hash, FileHistoryType editType) => files.Add(new FileHistoryEntry { Path = path, Hash = hash, EditType = editType });
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>()); }