/// <summary> /// Subscribe to new block messages. /// </summary> /// <returns>IObservable of type BlockInfoDTO</returns> public IObservable <BlockInfo> NewBlock() { SubscribeToChannel("block"); return(_subject.Where(e => JObject.Parse(e).Properties().ToArray().Any(i => i.Value.ToString().Contains("block"))) .Select(e => { var block = JsonConvert.DeserializeObject <BlockInfoDTO>(e); var network = (int)Convert.ToInt64(block.Block.Version.ToString("X").Substring(0, 2), 16); return new BlockInfo( block.Meta.Hash, block.Meta.GenerationHash, block.Meta.TotalFee, block.Meta.NumTransactions, block.Block.Signature, new PublicAccount(block.Block.Signer, NetworkType.GetRawValue(network)), NetworkType.GetRawValue(network), block.Block.Version, block.Block.Type, block.Block.Height, block.Block.Timestamp, block.Block.Difficulty, block.Block.PreviousBlockHash, block.Block.BlockTransactionsHash); })); }
internal NodeInfo MapNode(JToken i) { return(new NodeInfo( int.Parse(i["metaData"]["features"].ToString()), i["metaData"]["application"]?.ToString(), NetworkType.GetRawValue((byte)Convert.ToInt32(i["metaData"]["networkId"].ToString())), i["metaData"]["version"].ToString(), i["metaData"]["platform"].ToString(), i["endpoint"]["protocol"].ToString(), i["endpoint"]["port"].ToString(), i["endpoint"]["host"].ToString(), i["identity"]["public-key"].ToString(), i["identity"]["name"].ToString())); }
protected NetworkType.Types ExtractNetworkType(int version) { var netBytes = BitConverter.GetBytes(version).ToHexLower(); return(NetworkType.GetRawValue(Convert.ToInt32(netBytes.Substring(4, 4), 16))); }
internal NetworkType.Types ExtractNetworkType(int version) { var networkType = (int)Convert.ToInt64(version.ToString("X").Substring(0, 2), 16); return(NetworkType.GetRawValue(networkType)); }
/// <summary> /// Gets the network type. /// </summary> /// <returns>An IObservable of NetworkType.Types.</returns> /// <example> /// This sample shows how to use the <see> /// <cref>GetNetworkType</cref> /// </see> /// method. /// <code> /// NetworkType.Types networkType = await new NodeHttp("<!--insert host like: http://0.0.0.0:7890-->").GetNetworkType(); /// </code> /// </example> public IObservable <NetworkType.Types> GetNetworkType() { return(Observable.FromAsync(async ar => await NodeRoutesApi.ExtendedNodeInfoAsync()).Select(a => NetworkType.GetRawValue((byte)int.Parse(a["node"]["metaData"]["networkId"].ToString())))); }