github.com/alimy/mir/v4@v4.1.0/internal/generator/templates/macaron_iface.tmpl (about) 1 // Code generated by go-mir. DO NOT EDIT. 2 // versions: 3 // - mir {{ .VerInfo.MirVer }} 4 5 package {{ .PkgName }} 6 7 import ( 8 "net/http" 9 10 "github.com/alimy/mir/v4" 11 {{if notEmptyStr .EngineInfo.PkgName }}macaron "{{ .EngineInfo.PkgName }}{{else}}"gopkg.in/macaron.v1{{end}}" 12 {{ declareImports .Imports }} 13 ) 14 {{- if .DeclareCoreInterface }} 15 type _binding_ interface { 16 Bind(*macaron.Context) mir.Error 17 } 18 19 type _render_ interface { 20 Render(*macaron.Context) 21 } 22 23 type _default_ interface { 24 Bind(*macaron.Context, any) mir.Error 25 Render(*macaron.Context, any, mir.Error) 26 } 27 {{- end }} 28 29 {{ declareTypes .InOuts .PkgPath .Imports }} 30 31 {{if notEmptyStr .Comment }}// {{.Comment}}{{end}} 32 type {{.TypeName}} interface { 33 _default_ 34 35 {{if notEmptyStr .Chain }}// Chain provide handlers chain for macaron 36 {{.Chain}}() []macaron.Handler 37 {{end}} 38 {{range .Fields}} {{if .JustUseContext }}{{ .MethodName}}(*macaron.Context){{else}}{{.MethodName}}({{if .IsUseContext }}*macaron.Context{{if notEmptyStr .InName }}, {{end}}{{end}}{{if notEmptyStr .InName }}*{{ .InName }}{{end}}) {{if notEmptyStr .OutName }}(*{{ .OutName}}, mir.Error){{else}}mir.Error{{end}}{{end}} 39 {{end}} 40 41 mustEmbedUnimplemented{{.TypeName}}Servant() 42 } 43 44 // Register{{.TypeName}}Servant register {{.TypeName}} servant to macaron 45 func Register{{.TypeName}}Servant(m *macaron.Macaron, s {{.TypeName}}) { 46 {{if notEmptyStr .Group }}{{if notEmptyStr .Chain }} // use chain for router 47 middlewares := s.{{.Chain}}() 48 m.Group("{{.Group}}", func() { 49 {{range .Fields}}{{if .NotHttpAny }} m.Handle("{{.HttpMethod}}", "{{.Path}}", []macaron.Handler{ {{if .JustUseContext}}s.{{ .MethodName}}{{else}}func(c *macaron.Context) { 50 {{if notEmptyStr .InName -}} 51 req := new({{.InName}}) 52 {{if .IsBindIn -}} 53 var bv _binding_ = req 54 if err := bv.Bind(c); err != nil { 55 {{- else -}} 56 if err := s.Bind(c, req); err != nil { 57 {{- end }} 58 s.Render(c, nil, err) 59 return 60 } 61 {{- end }} 62 {{if notEmptyStr .OutName -}} 63 resp, err := s.{{ .MethodName}}({{if .IsUseContext }}c{{if notEmptyStr .InName }}, {{end}}{{end}}{{if notEmptyStr .InName}}req{{end}}) 64 {{if .IsRenderOut -}} 65 if err != nil { 66 s.Render(c, nil, err) 67 return 68 } 69 var rv _render_ = resp 70 rv.Render(c) 71 {{- else -}} 72 s.Render(c, resp, err) 73 {{- end }} 74 {{- else -}} 75 s.Render(c, nil, s.{{.MethodName}}({{if .IsUseContext }}c{{if notEmptyStr .InName }}, {{end}}{{end}}{{if notEmptyStr .InName}}req{{end}})) 76 {{- end }} 77 }{{end}}}) 78 {{else if .JustHttpAny}} m.Any("{{.Path}}", {{if .JustUseContext}}s.{{ .MethodName}}{{else}}func(c *macaron.Context) { 79 {{if notEmptyStr .InName -}} 80 req := new({{.InName}}) 81 {{if .IsBindIn -}} 82 var bv _binding_ = req 83 if err := bv.Bind(c); err != nil { 84 {{- else -}} 85 if err := s.Bind(c, req); err != nil { 86 {{- end }} 87 s.Render(c, nil, err) 88 return 89 } 90 {{- end }} 91 {{if notEmptyStr .OutName -}} 92 resp, err := s.{{ .MethodName}}({{if .IsUseContext }}c{{if notEmptyStr .InName }}, {{end}}{{end}}{{if notEmptyStr .InName}}req{{end}}) 93 {{if .IsRenderOut -}} 94 if err != nil { 95 s.Render(c, nil, err) 96 return 97 } 98 var rv _render_ = resp 99 rv.Render(c) 100 {{- else -}} 101 s.Render(c, resp, err) 102 {{- end }} 103 {{- else -}} 104 s.Render(c, nil, s.{{.MethodName}}({{if .IsUseContext }}c{{if notEmptyStr .InName }}, {{end}}{{end}}{{if notEmptyStr .InName}}req{{end}})) 105 {{- end }} 106 }{{end}}) 107 {{else}}{{$field := .}} { 108 h := {{if .JustUseContext}}s.{{ .MethodName}}{{else}}func(c *macaron.Context) { 109 {{if notEmptyStr .InName -}} 110 req := new({{.InName}}) 111 {{if .IsBindIn -}} 112 var bv _binding_ = req 113 if err := bv.Bind(c); err != nil { 114 {{- else -}} 115 if err := s.Bind(c, req); err != nil { 116 {{- end }} 117 s.Render(c, nil, err) 118 return 119 } 120 {{- end }} 121 {{if notEmptyStr .OutName -}} 122 resp, err := s.{{ .MethodName}}({{if .IsUseContext }}c{{if notEmptyStr .InName }}, {{end}}{{end}}{{if notEmptyStr .InName}}req{{end}}) 123 {{if .IsRenderOut -}} 124 if err != nil { 125 s.Render(c, nil, err) 126 return 127 } 128 var rv _render_ = resp 129 rv.Render(c) 130 {{- else -}} 131 s.Render(c, resp, err) 132 {{- end }} 133 {{- else -}} 134 s.Render(c, nil, s.{{.MethodName}}({{if .IsUseContext }}c{{if notEmptyStr .InName }}, {{end}}{{end}}{{if notEmptyStr .InName}}req{{end}})) 135 {{- end }} 136 }{{end}} 137 {{range .AnyHttpMethods}} m.Handle("{{.}}", "{{$field.Path}}", []macaron.Handler{h}) 138 {{end}}}{{end}} 139 {{end}}}, middlewares...){{else}} m.Group("{{.Group}}", func() { 140 {{range .Fields}}{{if .NotHttpAny }} m.Handle("{{.HttpMethod}}", "{{.Path}}", []macaron.Handler{ {{if .JustUseContext}}s.{{ .MethodName}}{{else}}func(c *macaron.Context) { 141 {{if notEmptyStr .InName -}} 142 req := new({{.InName}}) 143 {{if .IsBindIn -}} 144 var bv _binding_ = req 145 if err := bv.Bind(c); err != nil { 146 {{- else -}} 147 if err := s.Bind(c, req); err != nil { 148 {{- end }} 149 s.Render(c, nil, err) 150 return 151 } 152 {{- end }} 153 {{if notEmptyStr .OutName -}} 154 resp, err := s.{{ .MethodName}}({{if .IsUseContext }}c{{if notEmptyStr .InName }}, {{end}}{{end}}{{if notEmptyStr .InName}}req{{end}}) 155 {{if .IsRenderOut -}} 156 if err != nil { 157 s.Render(c, nil, err) 158 return 159 } 160 var rv _render_ = resp 161 rv.Render(c) 162 {{- else -}} 163 s.Render(c, resp, err) 164 {{- end }} 165 {{- else -}} 166 s.Render(c, nil, s.{{.MethodName}}({{if .IsUseContext }}c{{if notEmptyStr .InName }}, {{end}}{{end}}{{if notEmptyStr .InName}}req{{end}})) 167 {{- end }} 168 }{{end}}}) 169 {{else if .JustHttpAny}} m.Any("{{.Path}}", {{if .JustUseContext}}s.{{ .MethodName}}{{else}}func(c *macaron.Context) { 170 {{if notEmptyStr .InName -}} 171 req := new({{.InName}}) 172 {{if .IsBindIn -}} 173 var bv _binding_ = req 174 if err := bv.Bind(c); err != nil { 175 {{- else -}} 176 if err := s.Bind(c, req); err != nil { 177 {{- end }} 178 s.Render(c, nil, err) 179 return 180 } 181 {{- end }} 182 {{if notEmptyStr .OutName -}} 183 resp, err := s.{{ .MethodName}}({{if .IsUseContext }}c{{if notEmptyStr .InName }}, {{end}}{{end}}{{if notEmptyStr .InName}}req{{end}}) 184 {{if .IsRenderOut -}} 185 if err != nil { 186 s.Render(c, nil, err) 187 return 188 } 189 var rv _render_ = resp 190 rv.Render(c) 191 {{- else -}} 192 s.Render(c, resp, err) 193 {{- end }} 194 {{- else -}} 195 s.Render(c, nil, s.{{.MethodName}}({{if .IsUseContext }}c{{if notEmptyStr .InName }}, {{end}}{{end}}{{if notEmptyStr .InName}}req{{end}})) 196 {{- end }} 197 }{{end}}) 198 {{else}}{{$field := .}} { 199 h := {{if .JustUseContext}}s.{{ .MethodName}}{{else}}func(c *macaron.Context) { 200 {{if notEmptyStr .InName -}} 201 req := new({{.InName}}) 202 {{if .IsBindIn -}} 203 var bv _binding_ = req 204 if err := bv.Bind(c); err != nil { 205 {{- else -}} 206 if err := s.Bind(c, req); err != nil { 207 {{- end }} 208 s.Render(c, nil, err) 209 return 210 } 211 {{- end }} 212 {{if notEmptyStr .OutName -}} 213 resp, err := s.{{ .MethodName}}({{if .IsUseContext }}c{{if notEmptyStr .InName }}, {{end}}{{end}}{{if notEmptyStr .InName}}req{{end}}) 214 {{if .IsRenderOut -}} 215 if err != nil { 216 s.Render(c, nil, err) 217 return 218 } 219 var rv _render_ = resp 220 rv.Render(c) 221 {{- else -}} 222 s.Render(c, resp, err) 223 {{- end }} 224 {{- else -}} 225 s.Render(c, nil, s.{{.MethodName}}({{if .IsUseContext }}c{{if notEmptyStr .InName }}, {{end}}{{end}}{{if notEmptyStr .InName}}req{{end}})) 226 {{- end }} 227 }{{end}} 228 {{range .AnyHttpMethods}} m.Handle("{{.}}", "{{$field.Path}}", []macaron.Handler{h}) 229 {{end}}}{{end}} 230 {{end}}}){{end}}{{else}}{{if notEmptyStr .Chain }} // use chain for router 231 middlewares := s.{{.Chain}}() 232 for _, middleware := range middlewares { 233 m.Use(middleware) 234 }{{end}} 235 236 {{range .Fields}}{{if .NotHttpAny }} m.Handle("{{.HttpMethod}}", "{{.Path}}", []macaron.Handler{ {{if .JustUseContext}}s.{{ .MethodName}}{{else}}func(c *macaron.Context) { 237 {{if notEmptyStr .InName -}} 238 req := new({{.InName}}) 239 {{if .IsBindIn -}} 240 var bv _binding_ = req 241 if err := bv.Bind(c); err != nil { 242 {{- else -}} 243 if err := s.Bind(c, req); err != nil { 244 {{- end }} 245 s.Render(c, nil, err) 246 return 247 } 248 {{- end }} 249 {{if notEmptyStr .OutName -}} 250 resp, err := s.{{ .MethodName}}({{if .IsUseContext }}c{{if notEmptyStr .InName }}, {{end}}{{end}}{{if notEmptyStr .InName}}req{{end}}) 251 {{if .IsRenderOut -}} 252 if err != nil { 253 s.Render(c, nil, err) 254 return 255 } 256 var rv _render_ = resp 257 rv.Render(c) 258 {{- else -}} 259 s.Render(c, resp, err) 260 {{- end }} 261 {{- else -}} 262 s.Render(c, nil, s.{{.MethodName}}({{if .IsUseContext }}c{{if notEmptyStr .InName }}, {{end}}{{end}}{{if notEmptyStr .InName}}req{{end}})) 263 {{- end }} 264 }{{end}}}) 265 {{else if .JustHttpAny}} m.Any("{{.Path}}", {{if .JustUseContext}}s.{{ .MethodName}}{{else}}func(c *macaron.Context) { 266 {{if notEmptyStr .InName -}} 267 req := new({{.InName}}) 268 {{if .IsBindIn -}} 269 var bv _binding_ = req 270 if err := bv.Bind(c); err != nil { 271 {{- else -}} 272 if err := s.Bind(c, req); err != nil { 273 {{- end }} 274 s.Render(c, nil, err) 275 return 276 } 277 {{- end }} 278 {{if notEmptyStr .OutName -}} 279 resp, err := s.{{ .MethodName}}({{if .IsUseContext }}c{{if notEmptyStr .InName }}, {{end}}{{end}}{{if notEmptyStr .InName}}req{{end}}) 280 {{if .IsRenderOut -}} 281 if err != nil { 282 s.Render(c, nil, err) 283 return 284 } 285 var rv _render_ = resp 286 rv.Render(c) 287 {{- else -}} 288 s.Render(c, resp, err) 289 {{- end }} 290 {{- else -}} 291 s.Render(c, nil, s.{{.MethodName}}({{if .IsUseContext }}c{{if notEmptyStr .InName }}, {{end}}{{end}}{{if notEmptyStr .InName}}req{{end}})) 292 {{- end }} 293 }{{end}}) 294 {{else}}{{$field := .}} { 295 h := {{if .JustUseContext}}s.{{ .MethodName}}{{else}}func(c *macaron.Context) { 296 {{if notEmptyStr .InName -}} 297 req := new({{.InName}}) 298 {{if .IsBindIn -}} 299 var bv _binding_ = req 300 if err := bv.Bind(c); err != nil { 301 {{- else -}} 302 if err := s.Bind(c, req); err != nil { 303 {{- end }} 304 s.Render(c, nil, err) 305 return 306 } 307 {{- end }} 308 {{if notEmptyStr .OutName -}} 309 resp, err := s.{{ .MethodName}}({{if .IsUseContext }}c{{if notEmptyStr .InName }}, {{end}}{{end}}{{if notEmptyStr .InName}}req{{end}}) 310 {{if .IsRenderOut -}} 311 if err != nil { 312 s.Render(c, nil, err) 313 return 314 } 315 var rv _render_ = resp 316 rv.Render(c) 317 {{- else -}} 318 s.Render(c, resp, err) 319 {{- end }} 320 {{- else -}} 321 s.Render(c, nil, s.{{.MethodName}}({{if .IsUseContext }}c{{if notEmptyStr .InName }}, {{end}}{{end}}{{if notEmptyStr .InName}}req{{end}})) 322 {{- end }} 323 }{{end}} 324 {{range .AnyHttpMethods}} m.Handle("{{.}}", "{{$field.Path}}", []macaron.Handler{h}) 325 {{end}}} 326 {{end}} 327 {{end}} 328 {{- end -}} 329 } 330 331 {{ $unimplementedServant := print "Unimplemented" .TypeName "Servant" }} 332 // {{$unimplementedServant}} can be embedded to have forward compatible implementations. 333 type {{$unimplementedServant}} struct {} 334 335 {{if notEmptyStr .Chain }} 336 func ({{$unimplementedServant}}){{.Chain}}() []macaron.Handler { 337 return nil 338 } 339 340 {{end}} 341 {{range .Fields}} 342 func ({{$unimplementedServant}}){{if .JustUseContext }}{{ .MethodName}}(c *macaron.Context){{else}}{{.MethodName}}({{if .IsUseContext }}c *macaron.Context{{if notEmptyStr .InName }}, {{end}}{{end}}{{if notEmptyStr .InName }}req *{{ .InName }}{{end}}) {{if notEmptyStr .OutName }}(*{{ .OutName}}, mir.Error){{else}}mir.Error{{end}}{{end}} { 343 {{if .JustUseContext -}} 344 c.Resp.WriteHeader(http.StatusNotImplemented) 345 c.Resp.Write([]byte("method not implemented")) 346 {{else -}} 347 return {{if notEmptyStr .OutName }}nil, {{end}}mir.Errorln(http.StatusNotImplemented, http.StatusText(http.StatusNotImplemented)) 348 {{end -}} 349 } 350 351 {{end}} 352 func ({{$unimplementedServant}})mustEmbedUnimplemented{{.TypeName}}Servant() {}