/// <summary>
        /// Upload a single comment added to the review of an assembly with the specified ID.
        /// </summary>
        /// <param name="commentModel">The comment being added to the review.</param>
        /// <param name="assemblyId">The ID of the assembly being commented on.</param>
        /// <returns></returns>
        public async Task UploadCommentAsync(CommentModel commentModel, string assemblyId)
        {
            commentModel.Id = Guid.NewGuid().ToString();

            AssemblyCommentsModel assemblyComments = await FetchCommentsAsync(assemblyId);

            assemblyComments.AddComment(commentModel);
            await UploadAssemblyCommentsAsync(assemblyComments);
        }
        /// <summary>
        /// Upload the comments existing for an assembly review.
        /// </summary>
        /// <param name="assemblyComments">The comments in the review.</param>
        /// <returns></returns>
        public async Task UploadAssemblyCommentsAsync(AssemblyCommentsModel assemblyComments)
        {
            var blob = ContainerClient.GetBlobClient(assemblyComments.AssemblyId);

            using (var stream = new MemoryStream(Encoding.UTF8.GetBytes(JsonSerializer.ToString(assemblyComments))))
            {
                await blob.UploadAsync(stream);
            }
        }
        /// <summary>
        /// Return all comments written for review of the assembly with the provided ID.
        /// </summary>
        /// <param name="assemblyId">The ID of the assembly to have its comments read.</param>
        /// <returns>The comments existing for the specified assembly if it exists, or null if no assembly has the specified ID.</returns>
        public async Task <AssemblyCommentsModel> FetchCommentsAsync(string assemblyId)
        {
            var result = await ContainerClient.GetBlobClient(assemblyId).DownloadAsync();

            using (StreamReader reader = new StreamReader(result.Value.Content))
            {
                AssemblyCommentsModel comments = JsonSerializer.Parse <AssemblyCommentsModel>(reader.ReadToEnd());
                return(comments);
            }
        }
        /// <summary>
        /// Upload a single assembly for review.
        /// </summary>
        /// <param name="assemblyModel">The assembly being uploaded.</param>
        /// <returns>The ID assigned to the assembly in the database.</returns>
        public async Task <string> UploadAssemblyAsync(AssemblyModel assemblyModel)
        {
            var guid = Guid.NewGuid().ToString();

            assemblyModel.Id = guid;
            var assemblyComments = new AssemblyCommentsModel(guid);
            await commentRepository.UploadAssemblyCommentsAsync(assemblyComments);

            var blob = ContainerClient.GetBlobClient(guid);

            using (var stream = new MemoryStream(Encoding.UTF8.GetBytes(JsonSerializer.ToString(assemblyModel)))) {
                await blob.UploadAsync(stream);
            }
            blob = ContainerClient.GetBlobClient(guid);
            await blob.SetMetadataAsync(new Dictionary <string, string>() { { "id", guid } });

            return(guid);
        }
Esempio n. 5
0
        /// <summary>
        /// Upload a single assembly for review.
        /// </summary>
        /// <param name="assemblyModel">The assembly being uploaded.</param>
        /// <returns>The ID assigned to the assembly in the database.</returns>
        public async Task <string> UploadAssemblyAsync(AssemblyModel assemblyModel, Stream original)
        {
            var guid = Guid.NewGuid().ToString();

            assemblyModel.Id          = guid;
            assemblyModel.HasOriginal = original != null;
            var assemblyComments = new AssemblyCommentsModel(guid);
            await commentRepository.UploadAssemblyCommentsAsync(assemblyComments);

            var blob = ContainerClient.GetBlobClient(guid);

            await blob.UploadAsync(new MemoryStream(JsonSerializer.SerializeToUtf8Bytes(assemblyModel)));

            if (original != null)
            {
                var originalBlob = OriginalsContainer.GetBlobClient(guid);
                await originalBlob.UploadAsync(original);
            }

            return(guid);
        }