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() {}