public async Task UploadAttachment() { IPlanGridApi client = PlanGridClient.Create(); var docName = Guid.NewGuid().ToString(); FileUpload request = await client.CreateAttachmentUploadRequest(TestData.Project2Uid, new AttachmentUpload { ContentType = AttachmentUpload.Pdf, Name = docName, Folder = "test folder" }); Stream payload = typeof(AttachmentTests).Assembly.GetManifestResourceStream("PlanGrid.Api.Tests.TestData.Sample.pdf"); Attachment attachment = await client.Upload <Attachment>(request, payload); Assert.AreEqual(docName, attachment.Name); Assert.AreEqual("test folder", attachment.Folder); Assert.AreEqual(TestData.ApiTestsUserUid, attachment.CreatedBy.Uid); Assert.AreNotEqual(attachment.CreatedAt, default(DateTime)); Assert.AreEqual(request.Uid, attachment.Uid); using (var downloader = new HttpClient(new HttpClientHandler { AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip, AllowAutoRedirect = true })) { Stream returnedPayload = await downloader.GetStreamAsync(attachment.Url); payload = typeof(AttachmentTests).Assembly.GetManifestResourceStream("PlanGrid.Api.Tests.TestData.Sample.pdf"); var payloadBytes = new MemoryStream(); await payload.CopyToAsync(payloadBytes); var returnedBytes = new MemoryStream(); await returnedPayload.CopyToAsync(returnedBytes); Assert.IsTrue(payloadBytes.ToArray().SequenceEqual(returnedBytes.ToArray())); } Attachment retrievedAttachment = await client.GetAttachment(TestData.Project2Uid, attachment.Uid); Assert.IsFalse(retrievedAttachment.IsDeleted); await client.RemoveAttachment(TestData.Project2Uid, attachment.Uid); Attachment removedAttachment = await client.GetAttachment(TestData.Project2Uid, attachment.Uid); Assert.IsTrue(removedAttachment.IsDeleted); }
public async Task ReferenceAttachment() { IPlanGridApi client = PlanGridClient.Create(); var rfiInsert = new RfiUpsert { Question = "test question", Answer = "test answer", AssignedTo = new[] { TestData.ApiTestsUserUid }, DueAt = new DateTime(2020, 1, 1), IsLocked = false, SentAt = new DateTime(2019, 1, 1), StatusUid = TestData.Project2DraftRfiStatusUid, Title = "test title" }; Rfi rfi = await client.CreateRfi(TestData.Project2Uid, rfiInsert); FileUpload request = await client.CreateAttachmentUploadRequest(TestData.Project2Uid, new AttachmentUpload { ContentType = AttachmentUpload.Pdf, Name = "test name", Folder = "test folder" }); Stream payload = typeof(AttachmentTests).Assembly.GetManifestResourceStream("PlanGrid.Api.Tests.TestData.Sample.pdf"); Attachment attachment = await client.Upload <Attachment>(request, payload); await client.ReferenceAttachmentFromRfi(TestData.Project2Uid, rfi.Uid, new AttachmentReference { AttachmentUid = attachment.Uid }); Page <Attachment> attachments = await client.GetRfiAttachments(TestData.Project2Uid, rfi.Uid); Attachment rfiAttachment = attachments.Data.Single(); Assert.AreEqual(attachment.Uid, rfiAttachment.Uid); await client.RemoveAttachmentFromRfi(TestData.Project2Uid, rfi.Uid, rfiAttachment.Uid); attachments = await client.GetRfiAttachments(TestData.Project2Uid, rfi.Uid); Assert.AreEqual(0, attachments.Data.Length); }
public static async Task <Attachment> UploadAttachment(this IPlanGridApi api, string projectUid, string contentType, string name, Stream payload, string folder = null, CancellationToken cancellationToken = default(CancellationToken)) { FileUpload request = await api.CreateAttachmentUploadRequest(projectUid, new AttachmentUpload { ContentType = contentType, Name = name, Folder = folder }); return(await api.Upload <Attachment>(request, payload, cancellationToken)); }