diff options
Diffstat (limited to 'http.go')
| -rw-r--r-- | http.go | 215 |
1 files changed, 102 insertions, 113 deletions
@@ -5,9 +5,9 @@ import ( "net" "net/http" "strings" - "time" - "go.wit.com/lib/gui/shell" + "go.wit.com/lib/protobuf/forgepb" + "go.wit.com/lib/protobuf/gitpb" "go.wit.com/lib/protobuf/httppb" "go.wit.com/log" ) @@ -58,7 +58,6 @@ func okHandler(w http.ResponseWriter, r *http.Request) { route := reqPB.Route parts := strings.Split(route, "?") - // log.Info("client sent url =", route, parts) requrl := parts[0] if route == "/" { @@ -76,153 +75,143 @@ func okHandler(w http.ResponseWriter, r *http.Request) { log.Warn("forged REQUEST URL =", requrl, "from =", who) - if strings.HasPrefix(route, "/patches/") { - pb, err := makePatchesPB(reqPB) - log.Info("err", err, "len", pb.Len()) - return - } - - if strings.HasPrefix(route, "/patches/applied") { - log.Info("todo: handle applied patches") + if strings.HasPrefix(route, "/repos/") { + pb, err := makeReposPB(reqPB) + if err != nil { + reqPB.Errors = append(reqPB.Errors, log.Sprintf("%v", err)) + } + result := gitpb.NewRepos() + switch route { + case "/repos/pull": + result = pullRequest(pb, reqPB) + case "/repos/add": + result = addRequest(pb, reqPB) + default: + result = pullRequest(pb, reqPB) + } + if err := result.SendReply(w, reqPB); err != nil { + log.Info("Oh well, Send to client failed. err =", err) + } + // todo: logReq(reqPB) return } - - if route == "/patchset" { - if err := savePatchset(w, reqPB.Body); err != nil { - log.Warn("forged /patchset error", err) - return + if strings.HasPrefix(route, "/patches/") { + pb, err := makePatchesPB(reqPB) + if err != nil { + reqPB.Errors = append(reqPB.Errors, log.Sprintf("%v", err)) } - if err := me.forge.SavePatchsets(); err != nil { - log.Warn("savePatchsets() failed", err) - return + result := forgepb.NewPatches() + switch route { + case "/patches/new": + result = addNewPatches(pb, reqPB) + log.Infof("addNewPatches() pb.Len()=%d result.Len()=%d\n", pb.Len(), result.Len()) + case "/patches/get": + result = sendPendingPatches(pb, reqPB) + default: + result = addNewPatches(pb, reqPB) } + if err := result.SendReply(w, reqPB); err != nil { + log.Info("Oh well, Send to client failed. err =", err) + } + // todo: logReq(reqPB) return } - if route == "/lookup" { - log.Info("doing lookup len(reqPB.Body) =", len(reqPB.Body)) - found, err := lookupRepos(reqPB.Body) - if err != nil { + /* + if route == "/patchset" { + if err := savePatchset(w, reqPB.Body); err != nil { + log.Warn("forged /patchset error", err) + return + } + if err := me.forge.SavePatchsets(); err != nil { + log.Warn("savePatchsets() failed", err) + return + } return } - /* - for repo := range repos.IterAll() { - repo.Namespace += "good" - log.Infof("repo:%s,%s\n", repo.Namespace, repo.FullPath) - } - */ - found.SendPB(w) - return - } - - if strings.HasPrefix(route, "/patches/") { - /* - pb, err := forgepb.GetPatchesFromHttp(reqPB) + if route == "/lookup" { + log.Info("doing lookup len(reqPB.Body) =", len(reqPB.Body)) + found, err := lookupRepos(reqPB.Body) if err != nil { - log.Info("error converting to patches PB") return } - handlePatches(w, pb) - */ - return - } - if route == "/patchset" { - if err := savePatchset(w, reqPB.Body); err != nil { - log.Warn("forged /patchset error", err) + found.SendPB(w) return } - if err := me.forge.SavePatchsets(); err != nil { - log.Warn("savePatchsets() failed", err) + */ + /* + if strings.HasPrefix(route, "/patches/") { + pb, err := forgepb.GetPatchesFromHttp(reqPB) + if err != nil { + log.Info("error converting to patches PB") + return + } + handlePatches(w, pb) return } - return - } + */ - if route == "/lookup" { - log.Info("doing lookup len(reqPB.Body) =", len(reqPB.Body)) - found, err := lookupRepos(reqPB.Body) - if err != nil { + /* + if route == "/patchset" { + if err := savePatchset(w, reqPB.Body); err != nil { + log.Warn("forged /patchset error", err) + return + } + if err := me.forge.SavePatchsets(); err != nil { + log.Warn("savePatchsets() failed", err) + return + } return } - /* - for repo := range repos.IterAll() { - repo.Namespace += "good" - log.Infof("repo:%s,%s\n", repo.Namespace, repo.FullPath) + if route == "/lookup" { + log.Info("doing lookup len(reqPB.Body) =", len(reqPB.Body)) + found, err := lookupRepos(reqPB.Body) + if err != nil { + return } - */ - found.SendPB(w) - return - } - if route == "/patchset" { - if err := savePatchset(w, reqPB.Body); err != nil { - log.Warn("forged /patchset error", err) + found.SendPB(w) return } - if err := me.forge.SavePatchsets(); err != nil { - log.Warn("savePatchsets() failed", err) - return - } - return - } - if route == "/lookup" { - log.Info("doing lookup len(reqPB.Body) =", len(reqPB.Body)) - found, err := lookupRepos(reqPB.Body) - if err != nil { + if route == "/update" { + log.Info("doing update len(reqPB.Body) =", len(reqPB.Body)) + found, err := updateRepos(reqPB.Body) + if err != nil { + return + } + + found.SendPB(w) return } + */ - /* - for repo := range repos.IterAll() { - repo.Namespace += "good" - log.Infof("repo:%s,%s\n", repo.Namespace, repo.FullPath) + /* + if route == "/GetPatchsets" || route == "/patchsets/get" { + data, err := me.forge.Patchsets.Marshal() + if err != nil { + log.Info("patchsets.Marshal() to wire failed", err) + return } - */ - found.SendPB(w) - return - } - if route == "/update" { - log.Info("doing update len(reqPB.Body) =", len(reqPB.Body)) - found, err := updateRepos(reqPB.Body) - if err != nil { + start := time.Now() + log.Info("going to w.Write(data) with len", len(data)) + w.Write(data) + + age := shell.FormatDuration(time.Since(start)) + log.Printf("Done with xfer in (%s). happy hacking!\n", age) return } - found.SendPB(w) - return - } - - if route == "/GetPatchsets" || route == "/patchsets/get" { - data, err := me.forge.Patchsets.Marshal() - if err != nil { - log.Info("patchsets.Marshal() to wire failed", err) + if route == "/patchsetget" { + filename := r.URL.Query().Get("filename") + getPatchset(w, filename) return } - - start := time.Now() - log.Info("going to w.Write(data) with len", len(data)) - w.Write(data) - - /* - start := time.Now() - log.Info("going to w.Write(reqPB.Body) with len", len(reqPB.Body)) - w.Write(reqPB.Body) - */ - age := shell.FormatDuration(time.Since(start)) - log.Printf("Done with xfer in (%s). happy hacking!\n", age) - return - } - - if route == "/patchsetget" { - filename := r.URL.Query().Get("filename") - getPatchset(w, filename) - return - } + */ if route == "/goReference.svg" { w.Header().Set("Content-Type", "image/svg+xml") |
