internal static BlockEvent DeserializeBlockEvent(JsonElement element)
        {
            long            sequence        = default;
            BlockIdentifier blockIdentifier = default;
            BlockEventType  type            = default;

            foreach (var property in element.EnumerateObject())
            {
                if (property.NameEquals("sequence"))
                {
                    sequence = property.Value.GetInt64();
                    continue;
                }
                if (property.NameEquals("block_identifier"))
                {
                    blockIdentifier = BlockIdentifier.DeserializeBlockIdentifier(property.Value);
                    continue;
                }
                if (property.NameEquals("type"))
                {
                    type = new BlockEventType(property.Value.GetString());
                    continue;
                }
            }
            return(new BlockEvent(sequence, blockIdentifier, type));
        }
Пример #2
0
        internal static NetworkStatusResponse DeserializeNetworkStatusResponse(JsonElement element)
        {
            BlockIdentifier            currentBlockIdentifier = default;
            long                       currentBlockTimestamp  = default;
            BlockIdentifier            genesisBlockIdentifier = default;
            Optional <BlockIdentifier> oldestBlockIdentifier  = default;
            Optional <SyncStatus>      syncStatus             = default;
            IReadOnlyList <Peer>       peers = default;

            foreach (var property in element.EnumerateObject())
            {
                if (property.NameEquals("current_block_identifier"))
                {
                    currentBlockIdentifier = BlockIdentifier.DeserializeBlockIdentifier(property.Value);
                    continue;
                }
                if (property.NameEquals("current_block_timestamp"))
                {
                    currentBlockTimestamp = property.Value.GetInt64();
                    continue;
                }
                if (property.NameEquals("genesis_block_identifier"))
                {
                    genesisBlockIdentifier = BlockIdentifier.DeserializeBlockIdentifier(property.Value);
                    continue;
                }
                if (property.NameEquals("oldest_block_identifier"))
                {
                    if (property.Value.ValueKind == JsonValueKind.Null)
                    {
                        property.ThrowNonNullablePropertyIsNull();
                        continue;
                    }
                    oldestBlockIdentifier = BlockIdentifier.DeserializeBlockIdentifier(property.Value);
                    continue;
                }
                if (property.NameEquals("sync_status"))
                {
                    if (property.Value.ValueKind == JsonValueKind.Null)
                    {
                        property.ThrowNonNullablePropertyIsNull();
                        continue;
                    }
                    syncStatus = SyncStatus.DeserializeSyncStatus(property.Value);
                    continue;
                }
                if (property.NameEquals("peers"))
                {
                    List <Peer> array = new List <Peer>();
                    foreach (var item in property.Value.EnumerateArray())
                    {
                        array.Add(Peer.DeserializePeer(item));
                    }
                    peers = array;
                    continue;
                }
            }
            return(new NetworkStatusResponse(currentBlockIdentifier, currentBlockTimestamp, genesisBlockIdentifier, oldestBlockIdentifier.Value, syncStatus.Value, peers));
        }
Пример #3
0
        internal static Block DeserializeBlock(JsonElement element)
        {
            BlockIdentifier             blockIdentifier       = default;
            BlockIdentifier             parentBlockIdentifier = default;
            long                        timestamp             = default;
            IReadOnlyList <Transaction> transactions          = default;
            Optional <object>           metadata = default;

            foreach (var property in element.EnumerateObject())
            {
                if (property.NameEquals("block_identifier"))
                {
                    blockIdentifier = BlockIdentifier.DeserializeBlockIdentifier(property.Value);
                    continue;
                }
                if (property.NameEquals("parent_block_identifier"))
                {
                    parentBlockIdentifier = BlockIdentifier.DeserializeBlockIdentifier(property.Value);
                    continue;
                }
                if (property.NameEquals("timestamp"))
                {
                    timestamp = property.Value.GetInt64();
                    continue;
                }
                if (property.NameEquals("transactions"))
                {
                    List <Transaction> array = new List <Transaction>();
                    foreach (var item in property.Value.EnumerateArray())
                    {
                        array.Add(Transaction.DeserializeTransaction(item));
                    }
                    transactions = array;
                    continue;
                }
                if (property.NameEquals("metadata"))
                {
                    if (property.Value.ValueKind == JsonValueKind.Null)
                    {
                        property.ThrowNonNullablePropertyIsNull();
                        continue;
                    }
                    metadata = property.Value.GetObject();
                    continue;
                }
            }
            return(new Block(blockIdentifier, parentBlockIdentifier, timestamp, transactions, metadata.Value));
        }
        internal static BlockTransaction DeserializeBlockTransaction(JsonElement element)
        {
            BlockIdentifier blockIdentifier = default;
            Transaction     transaction     = default;

            foreach (var property in element.EnumerateObject())
            {
                if (property.NameEquals("block_identifier"))
                {
                    blockIdentifier = BlockIdentifier.DeserializeBlockIdentifier(property.Value);
                    continue;
                }
                if (property.NameEquals("transaction"))
                {
                    transaction = Transaction.DeserializeTransaction(property.Value);
                    continue;
                }
            }
            return(new BlockTransaction(blockIdentifier, transaction));
        }
Пример #5
0
        internal static AccountCoinsResponse DeserializeAccountCoinsResponse(JsonElement element)
        {
            BlockIdentifier      blockIdentifier = default;
            IReadOnlyList <Coin> coins           = default;
            Optional <object>    metadata        = default;

            foreach (var property in element.EnumerateObject())
            {
                if (property.NameEquals("block_identifier"))
                {
                    blockIdentifier = BlockIdentifier.DeserializeBlockIdentifier(property.Value);
                    continue;
                }
                if (property.NameEquals("coins"))
                {
                    List <Coin> array = new List <Coin>();
                    foreach (var item in property.Value.EnumerateArray())
                    {
                        array.Add(Coin.DeserializeCoin(item));
                    }
                    coins = array;
                    continue;
                }
                if (property.NameEquals("metadata"))
                {
                    if (property.Value.ValueKind == JsonValueKind.Null)
                    {
                        property.ThrowNonNullablePropertyIsNull();
                        continue;
                    }
                    metadata = property.Value.GetObject();
                    continue;
                }
            }
            return(new AccountCoinsResponse(blockIdentifier, coins, metadata.Value));
        }