/// <summary> /// Return a JSON representation for the given enumeration of blog postings. /// </summary> /// <param name="BlogPostings">An enumeration of blog postings.</param> /// <param name="Skip">The optional number of blog postings to skip.</param> /// <param name="Take">The optional number of blog postings to return.</param> /// <param name="Embedded">Whether this data is embedded into another data structure.</param> public static JArray ToJSON(this IEnumerable <BlogPosting> BlogPostings, UInt64?Skip = null, UInt64?Take = null, Boolean Embedded = false, InfoStatus ExpandTags = InfoStatus.ShowIdOnly, BlogPostingToJSONDelegate BlogPostingToJSON = null, Boolean IncludeCryptoHash = true) => BlogPostings?.Any() != true ? new JArray() : new JArray(BlogPostings. Where(dataSet => dataSet != null). OrderBy(dataSet => dataSet.Id). SkipTakeFilter(Skip, Take). SafeSelect(BlogPosting => BlogPostingToJSON != null ? BlogPostingToJSON(BlogPosting, Embedded, ExpandTags, IncludeCryptoHash) : BlogPosting.ToJSON(Embedded, ExpandTags, IncludeCryptoHash)));
public BlogPosting Sign(ICipherParameters PrivateKey) { var posting = new BlogPosting(Id, Text, PublicationDate, GeoLocation, Tags, PrivacyLevel, IsHidden, Signatures, DataSource); var ctext = posting.ToJSON(Embedded: false, ExpandTags: InfoStatus.ShowIdOnly, IncludeCryptoHash: false).ToString(Newtonsoft.Json.Formatting.None); var BlockSize = 32; var SHA256 = new SHA256Managed(); var SHA256Hash = SHA256.ComputeHash(ctext.ToUTF8Bytes()); var signer = SignerUtilities.GetSigner("NONEwithECDSA"); signer.Init(true, PrivateKey); signer.BlockUpdate(SHA256Hash, 0, BlockSize); var signature = signer.GenerateSignature().ToHexString(); var signatures = new List <BlogPostingSignature>(Signatures); signatures.Add(new BlogPostingSignature("json", "secp256k1", "DER+HEX", signature)); return(new BlogPosting(Id, Text, PublicationDate, GeoLocation, Tags, PrivacyLevel, IsHidden, signatures, DataSource)); }