public WikiDocument UploadWikiDocument(Wiki tag, IEnumerable <WikiPage> wikiPages, int miningLimit, TimeSpan miningTime, DigitalSignature digitalSignature) { lock (this.ThisLock) { var uploadItem = new UploadItem(); uploadItem.Type = "WikiDocument"; uploadItem.WikiDocument = new WikiDocument(tag, DateTime.UtcNow, wikiPages, digitalSignature); uploadItem.MiningLimit = miningLimit; uploadItem.MiningTime = miningTime; uploadItem.DigitalSignature = digitalSignature; _settings.UploadItems.RemoveAll((target) => { return(target.Type == uploadItem.Type && target.WikiDocument.Tag == uploadItem.WikiDocument.Tag && target.DigitalSignature == digitalSignature); }); _settings.UploadItems.Add(uploadItem); return(uploadItem.WikiDocument); } }
public IEnumerable <WikiDocumentMetadata> GetWikiDocumentMetadatas(Wiki tag) { if (_disposed) { throw new ObjectDisposedException(this.GetType().FullName); } lock (this.ThisLock) { return(_connectionsManager.GetWikiDocumentMetadatas(tag)); } }
internal WikiDocument(Wiki tag, DateTime creationTime, IEnumerable <WikiPage> wikiPages, DigitalSignature digitalSignature) { this.Tag = tag; this.CreationTime = creationTime; if (wikiPages != null) { this.ProtectedWikiPages.AddRange(wikiPages); } this.CreateCertificate(digitalSignature); }
protected override void ProtectedImport(Stream stream, BufferManager bufferManager, int count) { for (; ;) { byte id; { byte[] idBuffer = new byte[1]; if (stream.Read(idBuffer, 0, idBuffer.Length) != idBuffer.Length) { return; } id = idBuffer[0]; } int length; { byte[] lengthBuffer = new byte[4]; if (stream.Read(lengthBuffer, 0, lengthBuffer.Length) != lengthBuffer.Length) { return; } length = NetworkConverter.ToInt32(lengthBuffer); } using (RangeStream rangeStream = new RangeStream(stream, stream.Position, length, true)) { if (id == (byte)SerializeId.Tag) { this.Tag = Wiki.Import(rangeStream, bufferManager); } else if (id == (byte)SerializeId.CreationTime) { this.CreationTime = DateTime.ParseExact(ItemUtilities.GetString(rangeStream), "yyyy-MM-ddTHH:mm:ssZ", System.Globalization.DateTimeFormatInfo.InvariantInfo).ToUniversalTime(); } else if (id == (byte)SerializeId.WikiPage) { this.ProtectedWikiPages.Add(WikiPage.Import(rangeStream, bufferManager)); } else if (id == (byte)SerializeId.Certificate) { this.Certificate = Certificate.Import(rangeStream, bufferManager); } } } }
public WikiDocument UploadWikiDocument(Wiki tag, IEnumerable <WikiPage> wikiPages, int miningLimit, TimeSpan miningTime, DigitalSignature digitalSignature) { if (_disposed) { throw new ObjectDisposedException(this.GetType().FullName); } lock (this.ThisLock) { return(_uploadManager.UploadWikiDocument(tag, wikiPages, miningLimit, miningTime, digitalSignature)); } }
public static string ToWikiString(Wiki item) { if (item == null) { throw new ArgumentNullException("Wiki"); } try { using (Stream stream = OutoposConverter.ToStream <Wiki>(item)) { return("Wiki:" + OutoposConverter.ToBase64String(stream)); } } catch (Exception) { throw new FormatException(); } }