diff --git a/gateway/.gitignore b/gateway/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..ad230ccfee0cbc469398ffe36d77aed2ad245428 --- /dev/null +++ b/gateway/.gitignore @@ -0,0 +1 @@ +gateway diff --git a/gateway/Dockerfile b/gateway/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..8476e7e3877bf8e7802e363630fb44fef6561ad2 --- /dev/null +++ b/gateway/Dockerfile @@ -0,0 +1,15 @@ +from golang:1.7.3 + +RUN go get -d github.com/docker/docker/api/types \ + && go get -d github.com/docker/docker/api/types/filters \ + && go get -d github.com/docker/docker/api/types/swarm \ + && go get -d github.com/docker/docker/client + +WORKDIR /go/src/app/ +RUN go get github.com/gorilla/mux +COPY server.go . +RUN go build +EXPOSE 8080 + +CMD ["./app"] + diff --git a/gateway/server.go b/gateway/server.go new file mode 100644 index 0000000000000000000000000000000000000000..cb25d690d842cd30403a3b251c0bc7e059ae4e80 --- /dev/null +++ b/gateway/server.go @@ -0,0 +1,40 @@ +package main + +import ( + "bytes" + "log" + "net/http" + + "io/ioutil" + + "strconv" + + "github.com/gorilla/mux" +) + +func proxy(w http.ResponseWriter, r *http.Request) { + if r.Method == "POST" { + log.Println(r.Header) + header := r.Header["X-Function"] + log.Println(header) + if header[0] == "catservice" { + // client := http.Client{Timeout: time.Second * 2} + requestBody, _ := ioutil.ReadAll(r.Body) + buf := bytes.NewBuffer(requestBody) + + response, err := http.Post("http://"+header[0]+":"+strconv.Itoa(8080)+"/", "text/plain", buf) + if err != nil { + log.Fatalln(err) + } + responseBody, _ := ioutil.ReadAll(response.Body) + w.Write(responseBody) + + } + } +} + +func main() { + r := mux.NewRouter() + r.HandleFunc("/", proxy) + log.Fatal(http.ListenAndServe(":8080", r)) +}