github.com/vcilabs/webrpc@v0.5.2-0.20201116131534-162e27b1b33b/gen/golang/templates/types.go.tmpl (about)

     1  {{define "types"}}
     2  
     3  {{if .Messages}}
     4  //
     5  // Types
     6  //
     7  
     8  {{range .Messages}}
     9    {{if .Type | isAdvancedType}}
    10      type {{.Name}} {{.EnumType}}
    11    {{end}}
    12    {{if .Type | isEnum}}
    13      {{$enumName := .Name}}
    14      {{$enumType := .EnumType}}
    15      type {{$enumName}} {{$enumType}}
    16  
    17      const (
    18        {{- range .Fields}}
    19          {{$enumName}}_{{.Name}} {{$enumName}} = {{.Value}}
    20        {{- end}}
    21      )
    22  
    23      var {{$enumName}}_name = map[{{$enumType}}]string {
    24        {{- range .Fields}}
    25          {{.Value}}: "{{.Name}}",
    26        {{- end}}
    27      }
    28  
    29      var {{$enumName}}_value = map[string]{{$enumType}} {
    30        {{- range .Fields}}
    31          "{{.Name}}": {{.Value}},
    32        {{- end}}
    33      }
    34  
    35      func (x {{$enumName}}) String() string {
    36        return {{$enumName}}_name[{{$enumType}}(x)]
    37      }
    38  
    39      func (x {{$enumName}}) MarshalJSON() ([]byte, error) {
    40        buf := bytes.NewBufferString(`"`)
    41        buf.WriteString({{$enumName}}_name[{{$enumType}}(x)])
    42        buf.WriteString(`"`)
    43        return buf.Bytes(), nil
    44      }
    45  
    46      func (x *{{$enumName}}) UnmarshalJSON(b []byte) error {
    47        var j string
    48        err := json.Unmarshal(b, &j)
    49        if err != nil {
    50          return err
    51        }
    52        *x = {{$enumName}}({{$enumName}}_value[j])
    53        return nil
    54      }
    55    {{end}}
    56    {{if .Type | isStruct  }}
    57      type {{.Name}} struct {
    58        {{- range .Fields}}
    59          {{. | exportedField}} {{. | fieldOptional}}{{. | fieldTypeDef}} {{. | fieldTags}}
    60        {{- end}}
    61      }
    62    {{end}}
    63  {{end}}
    64  {{end}}
    65  {{if .Services}}
    66    {{range .Services}}
    67      type {{.Name}} interface {
    68        {{- range .Methods}}
    69          {{.Name}}({{.Inputs | methodInputs}}) ({{.Outputs | methodOutputs}})
    70        {{- end}}
    71      }
    72    {{end}}
    73    var WebRPCServices = map[string][]string{
    74      {{- range .Services}}
    75        "{{.Name}}": {
    76          {{- range .Methods}}
    77            "{{.Name}}",
    78          {{- end}}
    79        },
    80      {{- end}}
    81    }
    82  {{end}}
    83  
    84  {{end}}