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}