11package cube
22
33import (
4- "fmt"
5- "net/http"
6- "runtime"
7- "time"
8-
94 "github.com/labstack/echo"
105 "github.com/labstack/echo/middleware"
116 "github.com/labstack/labstack-go"
@@ -14,35 +9,17 @@ import (
149type (
1510 // Config defines the config for Cube middleware.
1611 Config struct {
12+ labstack.Cube
13+
1714 // Skipper defines a function to skip middleware.
1815 Skipper middleware.Skipper
19-
20- // LabStack Account ID
21- AccountID string `json:"account_id"`
22-
23- // LabStack API key
24- APIKey string `json:"api_key"`
25-
26- // Number of requests in a batch
27- BatchSize int `json:"batch_size"`
28-
29- // Interval in seconds to dispatch the batch
30- DispatchInterval time.Duration `json:"dispatch_interval"`
31-
32- // Additional tags
33- Tags []string `json:"tags"`
34-
35- // TODO: To be implemented
36- ClientLookup string `json:"client_lookup"`
3716 }
3817)
3918
4019var (
4120 // DefaultConfig is the default Cube middleware config.
4221 DefaultConfig = Config {
43- Skipper : middleware .DefaultSkipper ,
44- BatchSize : 60 ,
45- DispatchInterval : 60 ,
22+ Skipper : middleware .DefaultSkipper ,
4623 }
4724)
4825
@@ -86,28 +63,15 @@ func MiddlewareWithConfig(config Config) echo.MiddlewareFunc {
8663 }
8764
8865 // Start
89- cr := cube .Start (c .Request (), c .Response ())
66+ r := cube .Start (c .Request (), c .Response ())
9067
9168 // Handle panic
9269 defer func () {
93- if r := recover (); r != nil {
94- switch r := r .(type ) {
95- case error :
96- err = r
97- default :
98- err = fmt .Errorf ("%v" , r )
99- }
100- stack := make ([]byte , 4 << 10 ) // 4 KB
101- length := runtime .Stack (stack , false )
102- cr .Error = err .Error ()
103- cr .StackTrace = string (stack [:length ])
104- if c .Response ().Status == http .StatusOK {
105- c .Response ().Status = http .StatusInternalServerError
106- }
107- }
70+ // Recover
71+ cube .Recover (recover (), r )
10872
10973 // Stop
110- cube .Stop (cr , c .Response ().Status , c .Response ().Size )
74+ cube .Stop (r , c .Response ().Status , c .Response ().Size )
11175 }()
11276
11377 // Next
0 commit comments