forked from bketelsen/genkit
-
Notifications
You must be signed in to change notification settings - Fork 0
/
registration.go
80 lines (66 loc) · 1.86 KB
/
registration.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
package main
import "html/template"
var registrationTemplate = template.Must(template.New("render").Parse(`// generated by genkit -- DO NOT EDIT
package {{.Package}}
import (
"fmt"
"net"
"net/http"
"os"
"time"
"xor/base"
"golang.org/x/net/context"
"github.com/go-kit/kit/metrics/statsd"
httptransport "github.com/go-kit/kit/transport/http"
"github.com/spf13/viper"
)
var log = base.Logger
{{range .Types}}
func GetMux(ctx context.Context) *http.ServeMux {
statsdhost := viper.GetString("statsdhost")
statsdport := viper.GetInt("statsdport")
statsdhp := fmt.Sprintf("%s:%d", statsdhost, statsdport)
statsdWriter, err := net.Dial("udp", statsdhp)
if err != nil {
os.Exit(1)
}
m := http.NewServeMux()
requestCount := statsd.NewCounter(statsdWriter, "{{.LowerName}}_request_count", 5*time.Second)
requestLatency := statsd.NewHistogram(statsdWriter, "{{.LowerName}}_request_latency_ms", 5*time.Second)
var svc {{.Name}}Service
svc = {{.LowerName}}Service{ {{.LowerName}}List: make(map[string]{{.Name}})}
svc = loggingMiddleware(log)(svc)
svc = instrumentingMiddleware(requestCount, requestLatency)(svc)
createHandler := httptransport.NewServer(
ctx,
makeCreateEndpoint(svc),
decodeCreateRequest,
encodeResponse)
getHandler := httptransport.NewServer(
ctx,
makeGetEndpoint(svc),
decodeGetRequest,
encodeResponse)
updateHandler := httptransport.NewServer(
ctx,
makeUpdateEndpoint(svc),
decodeUpdateRequest,
encodeResponse)
listHandler := httptransport.NewServer(
ctx,
makeListEndpoint(svc),
decodeListRequest,
encodeResponse)
deleteHandler := httptransport.NewServer(
ctx,
makeDeleteEndpoint(svc),
decodeDeleteRequest,
encodeResponse)
m.Handle("/create", createHandler)
m.Handle("/get", getHandler)
m.Handle("/update", updateHandler)
m.Handle("/list", listHandler)
m.Handle("/delete", deleteHandler)
return m
}
{{end}}`))