private static MultipartWriter MultipartWriterForRev(Database db, RevisionInternal rev, string contentType) { var writer = new MultipartWriter(contentType, null); writer.SetNextPartHeaders(new Dictionary <string, string> { { "Content-Type", "application/json" } }); writer.AddData(rev.GetBody().AsJson()); var attachments = rev.GetAttachments(); if (attachments == null) { return(writer); } foreach (var entry in attachments) { var attachment = entry.Value.AsDictionary <string, object>(); if (attachment != null && attachment.GetCast <bool>("follows", false)) { var disposition = String.Format("attachment; filename={0}", Database.Quote(entry.Key)); writer.SetNextPartHeaders(new Dictionary <string, string> { { "Content-Disposition", disposition } }); var attachObj = default(AttachmentInternal); try { attachObj = db.AttachmentForDict(attachment, entry.Key); } catch (CouchbaseLiteException) { return(null); } var fileURL = attachObj.ContentUrl; if (fileURL != null) { writer.AddFileUrl(fileURL); } else { writer.AddStream(attachObj.ContentStream); } } } return(writer); }