arnaucube
arnaucube/go-dvotePublic Self-hosted repository
go-dvote/net/net.go
net/net.goRaw
 1package net
 2
 3import (
 4	"encoding/json"
 5	"fmt"
 6	"github.com/vocdoni/dvote-relay/batch"
 7	"github.com/vocdoni/dvote-relay/types"
 8	"github.com/vocdoni/dvote-relay/data"
 9	shell "github.com/ipfs/go-ipfs-api"
10)
11
12
13func Sub(topic string) error {
14	subscription := data.PsSubscribe(topic)
15	fmt.Println("Subscribed > " + topic)
16	var msg shell.PubSubRecord
17	var err error
18	for {
19		msg, err = subscription.Next()
20		if err != nil {
21			return err
22		}
23
24		payload := msg.Data()
25
26		var e types.Envelope
27		var b types.Ballot
28
29		err = json.Unmarshal(payload, &e)
30		if err != nil {
31			return err
32		}
33
34		err = json.Unmarshal(e.Ballot, &b)
35		if err != nil {
36			return err
37		}
38
39		err = batch.Add(b)
40		if err != nil {
41			return err
42		}
43
44		fmt.Println("Got > " + string(payload))
45	}
46}