diff --git a/.gitignore b/.gitignore index 7149a5b09b3dabcd4f0964bc9bf4b1cb5e89c48b..34389c56893829b204b0ec36bbc2bd32ee80aebe 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,3 @@ main -go* *.pb.go .DS_Store diff --git a/go.work b/go.work index 6dc2b0fcab14d35698f7032152b548611decfa61..0839bc1be470a9245db443488700d77c824e2d01 100644 --- a/go.work +++ b/go.work @@ -12,3 +12,5 @@ use ./src/gourl use ./src/hello-grpc/client use ./src/hello-grpc/server use ./src/hello-kafka +use ./src/gowww/client +use ./src/gowww/server diff --git a/src/gowww/client/client.go b/src/gowww/client/client.go new file mode 100644 index 0000000000000000000000000000000000000000..b75aec2cc51c48abc26a42d13f5b323b12db3087 --- /dev/null +++ b/src/gowww/client/client.go @@ -0,0 +1,25 @@ +package main + +import ( + "io" + "log" + "net/http" +) + +const ( + url = "http://localhost:8080/hellowww" +) + +func main() { + log.Printf("Calling service %s\n", url) + resp, err := http.Get(url) + if err != nil { + log.Fatalf("Error reading from %s\n%#v", url, err) + } + defer resp.Body.Close() + body, err := io.ReadAll(resp.Body) + if err != nil { + log.Fatalf("Error reading from %s\n%#v", url, err) + } + log.Printf("Result: %s", body) +} diff --git a/src/gowww/client/go.mod b/src/gowww/client/go.mod new file mode 100644 index 0000000000000000000000000000000000000000..e5abe2806ba0ed069004a1fe56c35a29d8b6fb61 --- /dev/null +++ b/src/gowww/client/go.mod @@ -0,0 +1,4 @@ +module github.com/turngeek/examples-go/src/gowww/client + +go 1.20 + diff --git a/src/gowww/server/go.mod b/src/gowww/server/go.mod new file mode 100644 index 0000000000000000000000000000000000000000..ce339c4d5a5a843630d2abad283a4f26e420de8e --- /dev/null +++ b/src/gowww/server/go.mod @@ -0,0 +1,4 @@ +module github.com/turngeek/examples-go/src/gowww/server + +go 1.20 + diff --git a/src/gowww/server/server.go b/src/gowww/server/server.go new file mode 100644 index 0000000000000000000000000000000000000000..6d3413c678d542970783a7c5818c74da9fea017c --- /dev/null +++ b/src/gowww/server/server.go @@ -0,0 +1,46 @@ +package main + +import ( + "encoding/json" + "fmt" + "log" + "net/http" + + "github.com/gorilla/mux" +) + +type helloWWWRequest struct { + Name string `json:"name"` +} + +type helloWWWResponse struct { + Message string `json:"message"` +} + +func main() { + port := 8080 + r := mux.NewRouter() + r.HandleFunc("/hellowww", helloWWWHandler).Methods("GET") + r.HandleFunc("/hellowww", helloYouHandler).Methods("POST") + log.Printf("Starting server on port %v\n", port) + log.Fatal(http.ListenAndServe(fmt.Sprintf(":%v", port), r)) +} + +func helloWWWHandler(w http.ResponseWriter, r *http.Request) { + response := helloWWWResponse{Message: "Hello WWW"} + encoder := json.NewEncoder(w) + encoder.Encode(&response) +} + +func helloYouHandler(w http.ResponseWriter, r *http.Request) { + var request helloWWWRequest + decoder := json.NewDecoder(r.Body) + err := decoder.Decode(&request) + if err != nil { + http.Error(w, "Bad Request", http.StatusBadRequest) + return + } + response := helloWWWResponse{Message: "Hello " + request.Name} + encoder := json.NewEncoder(w) + encoder.Encode(&response) +}