private async void ShareButtonClick(object sender, RoutedEventArgs e) { (Repository repository, Commit commit) = shareVulnerabilityFromHistoryCommand.GetSelectedCommit(); using (HttpClient httpClient = new HttpClient()) { using (MultipartFormDataContent formData = new MultipartFormDataContent()) { CweEntry selectedEntry = cweComboBox.SelectedItem as CweEntry; formData.Add(new StringContent(selectedEntry.Id.ToString()), "CweId"); formData.Add(new StringContent(commit.Message), "CommitMessage"); formData.Add(new StringContent(commentTextBox.Text), "Comment"); int fileCount = 0; foreach (TreeEntry treeEntry in commit.Tree) { fileCount++; if (treeEntry.TargetType == TreeEntryTargetType.Blob) { Blob blob = treeEntry.Target as Blob; formData.Add(new StreamContent(blob.GetContentStream()), $"currentFile{fileCount}", treeEntry.Path); TreeEntry previousVersion = GetPreviousVersionOfFile(repository, treeEntry, commit); if (previousVersion != null) { formData.Add(new StreamContent(blob.GetContentStream()), $"previousFile{fileCount}", treeEntry.Path); } } } string apiUrl = "http://micscan.local/api/Share"; HttpResponseMessage response = await httpClient.PostAsync(apiUrl, formData); } } }
private void CweDescriptionClicked(object sender, RequestNavigateEventArgs e) { if (cweComboBox.SelectedItem != null) { CweEntry selectedEntry = cweComboBox.SelectedItem as CweEntry; string url = $"https://cwe.mitre.org/data/definitions/{selectedEntry.Id}.html"; Process.Start(new ProcessStartInfo(url)); e.Handled = true; } }
private void cweComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e) { if (cweComboBox.SelectedItem != null) { CweEntry selectedEntry = cweComboBox.SelectedItem as CweEntry; if (selectedEntry != null) { shareButton.IsEnabled = true; viewDescriptionHyperlink.IsEnabled = selectedEntry.Title != "Other"; } } }
private async System.Threading.Tasks.Task ShareCommit(Repository repository, Commit commit) { using (MultipartFormDataContent formData = new MultipartFormDataContent()) { CweEntry selectedEntry = cweComboBox.SelectedItem as CweEntry; formData.Add(new StringContent(selectedEntry.Id.ToString()), "CweId"); formData.Add(new StringContent(commit.Message), "CommitMessage"); formData.Add(new StringContent(commentTextBox.Text), "Comment"); formData.Add(new StringContent((fixesButton.IsChecked == true).ToString()), "FixedWithCommit"); await TaskScheduler.Default; int fileCount = 0; Commit parentCommit = commit.Parents.First(); Patch patch = repository.Diff.Compare <Patch>(parentCommit.Tree, commit.Tree); int totalChanges = patch.Count(); foreach (PatchEntryChanges change in patch) { fileCount++; string fileName = Path.GetFileName(change.Path); await WriteToOutput($"Retrieving change {fileCount}/{totalChanges} ({fileName})"); TreeEntry treeEntry = commit.Tree[change.Path]; if (treeEntry != null && treeEntry.TargetType == TreeEntryTargetType.Blob) { Blob blob = treeEntry.Target as Blob; formData.Add(new StringContent(((int)change.Status).ToString()), $"File{fileCount}ChangeKind"); formData.Add(new StreamContent(blob.GetContentStream()), $"CurrentFile{fileCount}", treeEntry.Path); TreeEntry previousVersion = GetPreviousVersionOfFile(repository, treeEntry, commit); if (previousVersion != null) { Blob previousBlob = previousVersion.Target as Blob; formData.Add(new StreamContent(previousBlob.GetContentStream()), $"PreviousFile{fileCount}", previousVersion.Path); } } await UpdateProgress(fileCount / (totalChanges + 1.0)); } string apiUrl = "https://micscan.azurewebsites.net/api/Share"; using (HttpClient httpClient = new HttpClient()) { await WriteToOutput($"Uploading commit."); HttpResponseMessage response = await httpClient.PostAsync(apiUrl, formData); await UpdateProgress(1.0); } } }