...
1
9
10 package openapi
11
12 import (
13 "net/http"
14 "strings"
15
16 "github.com/gorilla/mux"
17 )
18
19
20 type DefaultApiController struct {
21 service DefaultApiServicer
22 errorHandler ErrorHandler
23 }
24
25
26 type DefaultApiOption func(*DefaultApiController)
27
28
29 func WithDefaultApiErrorHandler(h ErrorHandler) DefaultApiOption {
30 return func(c *DefaultApiController) {
31 c.errorHandler = h
32 }
33 }
34
35
36 func NewDefaultApiController(s DefaultApiServicer, opts ...DefaultApiOption) Router {
37 controller := &DefaultApiController{
38 service: s,
39 errorHandler: DefaultErrorHandler,
40 }
41
42 for _, opt := range opts {
43 opt(controller)
44 }
45
46 return controller
47 }
48
49
50 func (c *DefaultApiController) Routes() Routes {
51 return Routes{
52 {
53 "ReplayIdGet",
54 strings.ToUpper("Get"),
55 "/replay/{id}",
56 c.ReplayIdGet,
57 },
58 {
59 "StaffGet",
60 strings.ToUpper("Get"),
61 "/staff",
62 c.StaffGet,
63 },
64 }
65 }
66
67
68 func (c *DefaultApiController) ReplayIdGet(w http.ResponseWriter, r *http.Request) {
69 params := mux.Vars(r)
70 idParam := params["id"]
71
72 result, err := c.service.ReplayIdGet(r.Context(), idParam)
73
74 if err != nil {
75 c.errorHandler(w, r, err, &result)
76 return
77 }
78
79 EncodeFileResponse(result.Body, result.Filename, &result.Code, w)
80
81 }
82
83
84 func (c *DefaultApiController) StaffGet(w http.ResponseWriter, r *http.Request) {
85 query := r.URL.Query()
86 idsParam := strings.Split(query.Get("ids"), ",")
87 result, err := c.service.StaffGet(r.Context(), idsParam)
88
89 if err != nil {
90 c.errorHandler(w, r, err, &result)
91 return
92 }
93
94 EncodeFileResponse(result.Body, result.Filename, &result.Code, w)
95
96 }
97
View as plain text