package main import "fmt" import "log" import "net/http" import "io/ioutil" import "strings" import "os" import "time" import "github.com/davecgh/go-spew/spew" import "github.com/golang/protobuf/jsonpb" import pb "git.wit.com/wit/witProtobuf" func handler(w http.ResponseWriter, r *http.Request) { // spew.Dump(r) fmt.Fprintf(w, "Hi there, I love %s!", r.URL.Path[1:]) log.Printf("handler: fucking unknown path") } func JSONtoPB(a string) pb.Account { sets := pb.Account{} err := jsonpb.Unmarshal(strings.NewReader(string(a)), &sets) if err != nil { log.Println("jsonpb.Unmarshal() ERROR =", err) } spew.Dump(sets) return sets } func main() { log.Println("listen on :9000") http.HandleFunc("/", handler) http.HandleFunc("/email", handler2) http.ListenAndServe(":9000", nil) } func writeToFile(filename string, a string) { f, _ := os.Create(filename) f.WriteString(a) f.Close() } func handler2(w http.ResponseWriter, r *http.Request) { w.Header().Set("Access-Control-Allow-Origin", "*") w.Header().Set("Access-Control-Allow-Methods", "POST, GET, OPTIONS, PUT, DELETE") w.Header().Set("Access-Control-Allow-Headers", "Accept, Content-Type, Content-Length, Accept-Encoding, X-CSRF-Token, Authorization") // spew.Dump(r) fmt.Fprintf(w, "Hi there, handler2 %s!", r.URL.Path[1:]) body, err := ioutil.ReadAll(r.Body) j := string(body) log.Println("body =", j) log.Println("err =", err) // change the JSON int a protobuf account := JSONtoPB(string(body)) account.Token = "testing a token" log.Println("account =", account) // change it back to JSON marshaler := &jsonpb.Marshaler{} stuff, _ := marshaler.MarshalToString(&account) log.Println(stuff) current := time.Now() filename := "/tmp/" + current.Format("2006-01-02-15-04-05") log.Println("filename =", filename) // write to file writeToFile(filename, stuff + "\n") }