package main import ( "flag" "encoding/json" "fmt" "io/ioutil" "log" "net" "os" "runtime" "net/http" "strings" "github.com/TylerBrock/colorjson" ) var port string = "8080" func getIp() string { addrs, err := net.InterfaceAddrs() if err != nil { panic(err) } return addrs[1].String() } func getInfo() { var ip string = strings.Split(getIp(), "/")[0] dir, _ := os.Getwd() var ss [] string if runtime.GOOS == "windows" { ss = strings.Split(dir, "\\") } else { ss = strings.Split(dir, "/") } var path string = strings.Join(ss, "/") fmt.Println("\n", "==================================\n", "iSpindle test server configuration\n", "==================================\n", fmt.Sprintf("\n address : %s",ip), fmt.Sprintf("\n port : %s",port), fmt.Sprintf("\n path : %s",path), "\n method : HTTP\n") } func main() { flag.StringVar(&port, "p", port, "port to use") flag.Usage = func() { flag.PrintDefaults() // prints default usage } flag.Parse() var infoArg bool for _, a := range os.Args[1:] { if a == "info" { infoArg = true } } if infoArg { getInfo() } else { http.HandleFunc("/", serve) log.Fatal(http.ListenAndServe(":"+port, nil)) } } func serve(w http.ResponseWriter, r *http.Request) { var obj map[string]interface{} fmt.Printf("%+v\n", r) str, err := ioutil.ReadAll(r.Body) if err != nil { log.Fatal(err) } err = json.Unmarshal([]byte(str), &obj) if err != nil { log.Fatal(err) } f := colorjson.NewFormatter() f.Indent = 4 s, _ := f.Marshal(obj) fmt.Println(string(s)) fmt.Fprint(w, "ok") }