From 09ce8ef80221be8e146c41f5baa1d83e04136b31 Mon Sep 17 00:00:00 2001 From: imw Date: Tue, 11 Dec 2018 14:41:37 +0100 Subject: [PATCH] initial stub of listener --- net/net.go | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ net/net_test.go | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 98 insertions(+) create mode 100644 net/net.go create mode 100644 net/net_test.go diff --git a/net/net.go b/net/net.go new file mode 100644 index 0000000..a6e3482 --- /dev/null +++ b/net/net.go @@ -0,0 +1,49 @@ +package net + +import ( + "encoding/json" + "fmt" + "net/http" + "time" + "strconv" + "io" +) + +type submission struct { + Type string + Nonce []byte + Key []byte + Package []byte + Expiry time.Time +} + +func parseSubmission(rw http.ResponseWriter, request *http.Request) { + decoder := json.NewDecoder(request.Body) + + var s submission + err := decoder.Decode(&s) + + if err != nil { + panic(err) + } + + //check PoW + //check discriminator + //decrypt + //check franchise + //add to leveldb + j, err := json.Marshal(s) + //io.WriteString(rw, string(j)) +} + +func listen(port int) { + http.HandleFunc("/submit", parseSubmission) + portstr := strconv.Itoa(port) + go func() { + fmt.Println("serving on " + portstr) + err := http.ListenAndServe(":" + portstr, nil) + if err != nil { + panic("ListenAndServe: " + err.Error()) + } + }() +} diff --git a/net/net_test.go b/net/net_test.go new file mode 100644 index 0000000..013146b --- /dev/null +++ b/net/net_test.go @@ -0,0 +1,49 @@ +package net + +import ( + "testing" + "encoding/json" + "net/http" + "fmt" + "time" + "bytes" + "io/ioutil" +) + +func TestListen(t *testing.T) { + t.Log("Testing listener") + + testSubmission := submission { + "package", + []byte("012345678"), + []byte("012345678"), + []byte("012345678"), + time.Now(), + } + + go listen(8080) + + url := "http://localhost:8080/submit" + fmt.Println("URL:>", url) + + j, err := json.Marshal(testSubmission) + if err != nil { + fmt.Println(err) + return + } + + req, err := http.NewRequest("POST", url, bytes.NewBuffer(j)) + req.Header.Set("Content-Type", "application/json") + + client := &http.Client{} + resp, err := client.Do(req) + if err != nil { + panic(err) + } + defer resp.Body.Close() + + fmt.Println("response Status:", resp.Status) + fmt.Println("response Headers:", resp.Header) + body, _ := ioutil.ReadAll(resp.Body) + fmt.Println("response Body:", string(body)) +}