forked from devimteam/microgen
/
recovering.microgen.go
73 lines (63 loc) · 1.9 KB
/
recovering.microgen.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
// Code generated by microgen 0.9.0. DO NOT EDIT.
package service
import (
"context"
"fmt"
log "github.com/go-kit/kit/log"
service "github.com/recolabs/microgen/examples/generated"
)
// RecoveringMiddleware recovers panics from method calls, writes to provided logger and returns the error of panic as method error.
func RecoveringMiddleware(logger log.Logger) Middleware {
return func(next service.StringService) service.StringService {
return &recoveringMiddleware{
logger: logger,
next: next,
}
}
}
type recoveringMiddleware struct {
logger log.Logger
next service.StringService
}
func (M recoveringMiddleware) Uppercase(ctx context.Context, stringsMap map[string]string) (ans string, err error) {
defer func() {
if r := recover(); r != nil {
M.logger.Log("method", "Uppercase", "message", r)
err = fmt.Errorf("%v", r)
}
}()
return M.next.Uppercase(ctx, stringsMap)
}
func (M recoveringMiddleware) Count(ctx context.Context, text string, symbol string) (count int, positions []int, err error) {
defer func() {
if r := recover(); r != nil {
M.logger.Log("method", "Count", "message", r)
err = fmt.Errorf("%v", r)
}
}()
return M.next.Count(ctx, text, symbol)
}
func (M recoveringMiddleware) TestCase(ctx context.Context, comments []*service.Comment) (tree map[string]int, err error) {
defer func() {
if r := recover(); r != nil {
M.logger.Log("method", "TestCase", "message", r)
err = fmt.Errorf("%v", r)
}
}()
return M.next.TestCase(ctx, comments)
}
func (M recoveringMiddleware) DummyMethod(ctx context.Context) (err error) {
defer func() {
if r := recover(); r != nil {
M.logger.Log("method", "DummyMethod", "message", r)
err = fmt.Errorf("%v", r)
}
}()
return M.next.DummyMethod(ctx)
}
func (M recoveringMiddleware) IgnoredMethod() {
M.next.IgnoredMethod()
}
func (M recoveringMiddleware) IgnoredErrorMethod() error {
return M.next.IgnoredErrorMethod()
}