From 1daa63ab1161f7d2ed5032c345d47091d333e204 Mon Sep 17 00:00:00 2001 From: Kevin Keogh Date: Fri, 15 Sep 2017 12:46:43 -0400 Subject: [PATCH] Read the input into a buffer so it can be Unmarshal'ed twice --- serve.go | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/serve.go b/serve.go index 69aa7d6..06fa10f 100644 --- a/serve.go +++ b/serve.go @@ -3,6 +3,7 @@ package main import ( "encoding/json" "fmt" + "io/ioutil" "net/http" ) @@ -11,24 +12,22 @@ import ( func index(w http.ResponseWriter, r *http.Request) { if r.Method == "POST" { - mcOpt := &Option{} - bsOpt := &Option{} - - err := json.NewDecoder(r.Body).Decode(&mcOpt) + body, err := ioutil.ReadAll(r.Body) if err != nil { fmt.Printf("Error: %s\n", err) } + var bsOpt, mcOpt Option + json.Unmarshal(body, &bsOpt) + json.Unmarshal(body, &mcOpt) + mcOpt.PriceMonteCarlo() options := make(map[string]Option) - options["MonteCarlo"] = *mcOpt - options["BlackScholes"] = *bsOpt + options["MonteCarlo"] = mcOpt + options["ClosedForm"] = bsOpt json.NewEncoder(w).Encode(options) - if err != nil { - fmt.Printf("Error: %v\n", err) - } } else if r.Method == "GET" { fmt.Fprintf(w, "Hello go!") // To be updated @@ -36,7 +35,6 @@ func index(w http.ResponseWriter, r *http.Request) { } - func main() { http.HandleFunc("/", index) http.ListenAndServe(":8080", nil)