package main import ( "net/http" "strings" "go.wit.com/lib/protobuf/forgepb" "go.wit.com/lib/protobuf/httppb" "go.wit.com/log" ) func handlePatches(w http.ResponseWriter, r *http.Request, data []byte) error { pb, err := marshalPatchesPB(r, data) if err != nil { return sendPatchesError(w, pb, err) } route := pb.HttpRequest.Route if route == "" { route = cleanURL(r.URL.Path) } if route == "" { route = "route was blank" } log.Info("GOT PATCHES ROUTE", route, "with # patches =", pb.Len()) if strings.HasPrefix(route, "/patches/old") { processPatchesOldPB(r, pb) } else if strings.HasPrefix(route, "/patches/new") { log.Info("add new patches") } else { log.Info("unknown route", route) } return nil } func makePatchesPB(reqPB *httppb.HttpRequest) (*forgepb.Patches, error) { pb := forgepb.NewPatches() err := pb.Unmarshal(reqPB.Body) return pb, err } func sendPatchesError(w http.ResponseWriter, r *forgepb.Patches, err error) error { log.Info("send error back to user", err) return nil } func processPatchesOldPB(r *http.Request, pb *forgepb.Patches) error { log.Info("check out these patches") pb.PrintTable() return nil } func marshalPatchesPB(r *http.Request, msg []byte) (*forgepb.Patches, error) { pb := forgepb.NewPatches() 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 }