@ -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()) |
||||
|
} |
||||
|
}() |
||||
|
} |
@ -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)) |
||||
|
} |