private async Task <ReviewCodeFileModel> CreateFileAsync(string revisionId, string originalName, Stream fileStream, bool runAnalysis) { var originalNameExtension = Path.GetExtension(originalName); var languageService = _languageServices.Single(s => s.IsSupportedExtension(originalNameExtension)); var reviewCodeFileModel = new ReviewCodeFileModel(); reviewCodeFileModel.HasOriginal = true; reviewCodeFileModel.Name = originalName; using (var memoryStream = new MemoryStream()) { await fileStream.CopyToAsync(memoryStream); memoryStream.Position = 0; CodeFile codeFile = await languageService.GetCodeFileAsync(originalName, memoryStream, runAnalysis); InitializeFromCodeFile(reviewCodeFileModel, codeFile); memoryStream.Position = 0; await _originalsRepository.UploadOriginalAsync(reviewCodeFileModel.ReviewFileId, memoryStream); await _codeFileRepository.UpsertCodeFileAsync(revisionId, reviewCodeFileModel.ReviewFileId, codeFile); } return(reviewCodeFileModel); }
private void InitializeFromCodeFile(ReviewCodeFileModel file, CodeFile codeFile) { file.Language = codeFile.Language; file.VersionString = codeFile.VersionString; file.Name = codeFile.Name; file.PackageName = codeFile.PackageName; }
private async Task AddRevisionAsync( ClaimsPrincipal user, ReviewModel review, string name, string label, Stream fileStream) { var revision = new ReviewRevisionModel(); ReviewCodeFileModel codeFile = await CreateFileAsync( revision.RevisionId, name, fileStream, review.RunAnalysis); revision.Files.Add(codeFile); revision.Author = user.GetGitHubLogin(); revision.Label = label; review.Revisions.Add(revision); // auto subscribe revision creation user await _notificationManager.SubscribeAsync(review, user); await _reviewsRepository.UpsertReviewAsync(review); await _notificationManager.NotifySubscribersOnNewRevisionAsync(revision, user); }
private async Task <ReviewCodeFileModel> CreateReviewCodeFileModel(string revisionId, MemoryStream memoryStream, CodeFile codeFile) { var reviewCodeFileModel = new ReviewCodeFileModel { HasOriginal = true, }; InitializeFromCodeFile(reviewCodeFileModel, codeFile); memoryStream.Position = 0; await _originalsRepository.UploadOriginalAsync(reviewCodeFileModel.ReviewFileId, memoryStream); await _codeFileRepository.UpsertCodeFileAsync(revisionId, reviewCodeFileModel.ReviewFileId, codeFile); return(reviewCodeFileModel); }
private async Task CreateTestDataIfNotExistAsync() { var dataBaseResponse = await _cosmosClient.CreateDatabaseIfNotExistsAsync("APIView"); var containerResponse = await dataBaseResponse.Database.CreateContainerIfNotExistsAsync("Reviews", "/id"); if (containerResponse.StatusCode.Equals(HttpStatusCode.Created)) { foreach (int value in Enumerable.Range(1, 2)) { string[] languages = new String[] { "TestLanguageOne", "TestLanguageTwo" }; foreach (string language in languages) { ReviewType[] reviewTypes = new ReviewType[] { ReviewType.Manual, ReviewType.Automatic, ReviewType.PullRequest, ReviewType.All }; foreach (ReviewType reviewType in reviewTypes) { bool[] boolvalues = new bool[] { true, false }; foreach (var boolValue in boolvalues) { foreach (var boolVal in boolvalues) { var container = containerResponse.Container; ReviewModel review = new ReviewModel { Name = $"TestReview{value}_For_{language}_For_{reviewType.ToString()}_For{boolValue}_For{boolVal}", Author = $"TestReviewAuthor{value}", CreationDate = DateTime.Now, IsClosed = boolValue, FilterType = reviewType, ServiceName = $"TestServiceName{value}", PackageDisplayName = $"TestPackageDisplayName{value}" }; var revisions = new ReviewRevisionModelList(review); foreach (int val in Enumerable.Range(1, 2)) { var revision = new ReviewRevisionModel { Name = $"TestRevision{value}_{val}", }; if (boolVal) { revision.Approvers.Add($"TestApprover{value}_{val}"); } foreach (int v in Enumerable.Range(1, 2)) { var file = new ReviewCodeFileModel { Name = $"TestFile{value}_{val}_{v}", Language = language }; revision.Files.Add(file); } revisions.Add(revision); } review.Revisions = revisions; await _cosmosReviewRepository.UpsertReviewAsync(review); } } } } } } }