From aefcb834199a64ff62daf7e685bbe5088c08a11e Mon Sep 17 00:00:00 2001
From: Maran <maran.hidskes@gmail.com>
Date: Mon, 26 May 2014 17:07:04 +0200
Subject: [PATCH] Updated Public Block and Transaction objects with more
 information

---
 ethpub/types.go | 36 ++++++++++++++++++++++++++++--------
 1 file changed, 28 insertions(+), 8 deletions(-)

diff --git a/ethpub/types.go b/ethpub/types.go
index e8a2164a7..edef7d50e 100644
--- a/ethpub/types.go
+++ b/ethpub/types.go
@@ -2,16 +2,20 @@ package ethpub
 
 import (
 	"encoding/hex"
+	"encoding/json"
 	"github.com/ethereum/eth-go/ethchain"
 	"github.com/ethereum/eth-go/ethutil"
+	_ "log"
 	"strings"
 )
 
 // Block interface exposed to QML
 type PBlock struct {
-	ref    *ethchain.Block
-	Number int    `json:"number"`
-	Hash   string `json:"hash"`
+	ref          *ethchain.Block
+	Number       int    `json:"number"`
+	Hash         string `json:"hash"`
+	Transactions string `json:"transactions"`
+	Time         int64  `json:"time"`
 }
 
 // Creates a new QML Block from a chain block
@@ -19,8 +23,17 @@ func NewPBlock(block *ethchain.Block) *PBlock {
 	if block == nil {
 		return nil
 	}
+	var ptxs []PTx
+	for _, tx := range block.Transactions() {
+		ptxs = append(ptxs, *NewPTx(tx))
+	}
 
-	return &PBlock{ref: block, Number: int(block.Number.Uint64()), Hash: ethutil.Hex(block.Hash())}
+	b, err := json.Marshal(ptxs)
+	if err != nil {
+		return nil
+	}
+
+	return &PBlock{ref: block, Number: int(block.Number.Uint64()), Hash: ethutil.Hex(block.Hash()), Transactions: string(b), Time: block.Time}
 }
 
 func (self *PBlock) ToString() string {
@@ -43,16 +56,23 @@ func (self *PBlock) GetTransaction(hash string) *PTx {
 type PTx struct {
 	ref *ethchain.Transaction
 
-	Value, Hash, Address string
-	Contract             bool
+	Value    string `json:"value"`
+	Gas      string `json:"gas"`
+	GasPrice string `json:"gasPrice"`
+	Hash     string `json:"hash"`
+	Address  string `json:"address"`
+	Sender   string `json:"sender"`
+	Data     string `json:"data"`
+	Contract bool   `json:"isContract"`
 }
 
 func NewPTx(tx *ethchain.Transaction) *PTx {
 	hash := hex.EncodeToString(tx.Hash())
-	sender := hex.EncodeToString(tx.Recipient)
+	receiver := hex.EncodeToString(tx.Recipient)
+	sender := hex.EncodeToString(tx.Sender())
 	isContract := len(tx.Data) > 0
 
-	return &PTx{ref: tx, Hash: hash, Value: ethutil.CurrencyToString(tx.Value), Address: sender, Contract: isContract}
+	return &PTx{ref: tx, Hash: hash, Value: ethutil.CurrencyToString(tx.Value), Address: receiver, Contract: isContract, Gas: tx.Gas.String(), GasPrice: tx.GasPrice.String(), Data: hex.EncodeToString(tx.Data), Sender: sender}
 }
 
 func (self *PTx) ToString() string {