summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile11
-rw-r--r--handlePatches.go57
-rw-r--r--http.go5
-rw-r--r--main.go2
4 files changed, 71 insertions, 4 deletions
diff --git a/Makefile b/Makefile
index e22203c..d0b8b88 100644
--- a/Makefile
+++ b/Makefile
@@ -3,9 +3,9 @@
VERSION = $(shell git describe --tags)
BUILDTIME = $(shell date +%Y.%m.%d_%H%M)
-all: install
- forged merge
- forged
+all: build
+ ./forged merge
+ ./forged
build: goimports
GO111MODULE=off go build \
@@ -40,6 +40,11 @@ run: build
systemctl stop forged.service
./forged --daemon
# setcap 'cap_net_bind_service=+ep' forged # allow the binary to open ports below 1024
+ #
+run-clean: build
+ -rm /var/lib/forged/all-patches.pb
+ ./forged --daemon
+ # setcap 'cap_net_bind_service=+ep' forged # allow the binary to open ports below 1024
prod: build
make stop
diff --git a/handlePatches.go b/handlePatches.go
new file mode 100644
index 0000000..904da49
--- /dev/null
+++ b/handlePatches.go
@@ -0,0 +1,57 @@
+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
+}
diff --git a/http.go b/http.go
index f07c495..4d9a5d6 100644
--- a/http.go
+++ b/http.go
@@ -139,6 +139,11 @@ func okHandler(w http.ResponseWriter, r *http.Request) {
return
}
+ if strings.HasPrefix(route, "/patches/") {
+ handlePatches(w, r)
+ return
+ }
+
if route == "/goReference.svg" {
w.Header().Set("Content-Type", "image/svg+xml")
writeFile(w, "goReference.svg")
diff --git a/main.go b/main.go
index ec0be67..eb2f68f 100644
--- a/main.go
+++ b/main.go
@@ -54,7 +54,7 @@ func main() {
me.forge = forgepb.RawInitPB()
- if err := me.forge.LoadPatchsets(); err != nil {
+ if err := me.forge.InitPatchsets(); err != nil {
log.Info("patches failed to open", err)
}