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	"net/http"
 7	"io"
 8	"github.com/vocdoni/dvote-relay/batch"
 9	"github.com/vocdoni/dvote-relay/types"
10)
11
12
13func parse(rw http.ResponseWriter, request *http.Request) {
14	decoder := json.NewDecoder(request.Body)
15
16	var s types.Submission
17	var p types.Packet
18	err := decoder.Decode(&s)
19
20	if err != nil {
21		panic(err)
22	}
23
24	//check PoW
25	//check key
26	//decrypt
27	//check franchise
28	//construct packet
29
30	p.PID = "1"
31	p.Nullifier = []byte{1,2,3}
32	p.Vote = []byte{4,5,6}
33	p.Franchise = []byte{7,8,9}
34	err = batch.Add(p)
35	if err != nil {
36		panic(err)
37	}
38
39	j, err := json.Marshal(s)
40	io.WriteString(rw, string(j))
41}
42
43func Listen(port string) {
44	http.HandleFunc("/submit", parse)
45	//add waitgroup
46	func() {
47		fmt.Println("serving on " + port)
48		err := http.ListenAndServe(":" + port, nil)
49		if err != nil {
50			panic("ListenAndServe: " + err.Error())
51		}
52	}()
53}