package main import ( "io/ioutil" "net/http" "strings" "go.wit.com/lib/protobuf/forgepb" "go.wit.com/log" ) func handlePatches(w http.ResponseWriter, r *http.Request) error { pb, err := marshalPatchesPB(r) if err != nil { return sendPatchesError(w, pb, err) } route := pb.HttpRequest.Route if strings.HasPrefix(route, "/patches/old") { processPatchesPB(r, pb) } else if strings.HasPrefix(route, "/patches/old") { log.Info("add new patches") } else { log.Info("unknown route", route) } return nil } func sendPatchesError(w http.ResponseWriter, r *forgepb.Patches, err error) error { log.Info("send error back to user", err) return nil } func processPatchesPB(r *http.Request, pb *forgepb.Patches) error { log.Info("send error back to user") return nil } func marshalPatchesPB(r *http.Request) (*forgepb.Patches, error) { pb := forgepb.NewPatches() msg, err := ioutil.ReadAll(r.Body) // Read the body as []byte defer r.Body.Close() if err != nil { return pb, err } if err := pb.Unmarshal(msg); err != nil { log.Info("proto.Unmarshal() failed on wire message len", len(msg), err) // add the header pb.AddHttpToPB(r) return pb, err } // add the header pb.AddHttpToPB(r) return pb, nil }