diff --git a/src/gojoke/go.mod b/src/gojoke/go.mod new file mode 100644 index 0000000000000000000000000000000000000000..c2acb831a0b8ddf7526392ebff65c753f0de7c3a --- /dev/null +++ b/src/gojoke/go.mod @@ -0,0 +1,3 @@ +module github.com/turngeek/examples-go/src/gojoke + +go 1.16 diff --git a/src/gojoke/main.go b/src/gojoke/main.go new file mode 100644 index 0000000000000000000000000000000000000000..a7cc87e3fb98c955ea9b513255a0f7e90d33dd85 --- /dev/null +++ b/src/gojoke/main.go @@ -0,0 +1,27 @@ +package main + +import ( + "encoding/json" + "fmt" + "log" + "net/http" +) + +const ( + url = "http://api.icndb.com/jokes/random" +) + +func main() { + fmt.Printf("Calling joke service %s ...\n", url) + resp, err := http.Get(url) + if err != nil { + log.Fatalf("Can't access %s\n#%v", url, err) + } + jokeResponse := JokeResponse{} + decoder := json.NewDecoder(resp.Body) + err = decoder.Decode(&jokeResponse) + if err != nil { + log.Fatalf("Bad response\n:#%v", err) + } + log.Printf("Joke of the Day:\n%s", jokeResponse.Value.Joke) +} diff --git a/src/gojoke/types.go b/src/gojoke/types.go new file mode 100644 index 0000000000000000000000000000000000000000..01a79d43d87eb44f6998edefd0520b3976a2cfc3 --- /dev/null +++ b/src/gojoke/types.go @@ -0,0 +1,12 @@ +package main + +type JokeResponse struct { + Type string `json:"type"` + Value Value `json:"value"` +} + +type Value struct { + Id int `json:"id"` + Joke string `json:"joke"` + Categories []string `json:"categories"` +}