...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 package main
16
17 import (
18 "net/http"
19
20 "github.com/palantir/go-baseapp/baseapp"
21 "github.com/palantir/go-baseapp/baseapp/datadog"
22 "github.com/rs/zerolog"
23 "goji.io/pat"
24 )
25
26 type MessageHandler struct {
27 Message string
28 }
29
30 func (h *MessageHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
31 ctx := r.Context()
32 logger := zerolog.Ctx(ctx)
33
34
35 logger.Info().Str("user-agent", r.Header.Get("User-Agent")).Msg("Received request")
36
37 baseapp.WriteJSON(w, http.StatusOK, map[string]string{
38 "message": h.Message,
39 })
40 }
41
42
43 var _ http.Handler = &MessageHandler{}
44
45 func main() {
46
47 config, err := ReadConfig("example/config.yml")
48 if err != nil {
49 panic(err)
50 }
51
52
53 logger := baseapp.NewLogger(config.Logging)
54
55
56 serverParams := baseapp.DefaultParams(logger, "example.")
57 server, err := baseapp.NewServer(config.Server, serverParams...)
58 if err != nil {
59 panic(err)
60 }
61
62
63 messageHandler := &MessageHandler{Message: config.App.Message}
64 server.Mux().Handle(pat.Get("/api/message"), messageHandler)
65
66
67 if err := datadog.StartEmitter(server, config.Datadog); err != nil {
68 panic(err)
69 }
70
71
72 _ = server.Start()
73 }
74
View as plain text