Files
mautrix-telegram/pkg/gotd/gen/_template/method.tmpl
T
2025-06-27 20:03:37 -07:00

63 lines
1.9 KiB
Cheetah

{{- /*gotype: go.mau.fi/mautrix-telegram/pkg/gotd/gen.structDef*/ -}}
{{ define "method" }}{{- $s := . -}}{{ if $s.Method }}
// {{ $s.Method }} invokes method {{ $s.RawType }} returning error if any.
{{- if $s.Docs }}
{{- range $d := $s.Docs }}
// {{ trim $d }}
{{- end }}
{{- end }}
{{- if $s.Links }}
{{- template "print_links" $s.Links }}
{{- end }}
{{- if $s.Errors }}
{{- template "print_errors" $s.Errors }}
{{- end }}
{{- if $s.URL }}
//
// See {{ $s.URL }} for reference.
{{- end }}
{{- if $s.BotCanUse }}
// Can be used by bots.
{{- end }}
{{- if $s.Result }}
{{- if $s.ResultSingular }}
func (c *Client) {{ $s.Method }}({{ template "request_params" $s }}) ({{ if not $s.ResultVector }}*{{ $s.Result }}{{ else }}{{ template "slice_result_name" $s }}{{ end }}, error) {
var result {{ $s.Result }}
{{ template "pack_request" $s }}
if err := c.rpc.Invoke(ctx, request, &result); err != nil {
return nil, err
}
{{- if $s.ResultVector }}
return {{ template "slice_result_name" $s }}(result.Elems), nil
{{- else }}
return &result, nil
{{- end }}
}
{{- else }}
func (c *Client) {{ $s.Method }}({{ template "request_params" $s }}) ({{if ne $s.Result "BoolClass"}}{{ $s.Result }}{{ else }}bool{{ end }}, error) {
var result {{ $s.ResultFunc }}Box
{{ template "pack_request" $s }}
if err := c.rpc.Invoke(ctx, request, &result); err != nil {
{{- if ne $s.Result "BoolClass" }}return nil, err{{- else }}return false, err{{- end }}
}
{{- if ne $s.Result "BoolClass" }}
return result.{{ $s.ResultBaseName }}, nil
{{- else }}
_, ok := result.{{ $s.ResultBaseName }}.(*BoolTrue)
return ok, nil
{{- end }}
}
{{- end }}
{{- else }}
func (c *Client) {{ $s.Method }}({{ template "request_params" $s }}) error {
var ok Ok
{{ template "pack_request" $s }}
if err := c.rpc.Invoke(ctx, request, &ok); err != nil {
return err
}
return nil
}
{{- end }}
{{ end }}{{ end }}