github.com/CyCoreSystems/ari@v4.8.4+incompatible/internal/eventgen/template.tmpl (about)

     1  // file generated by eventgen
     2  
     3  package ari
     4  
     5  import (
     6     "encoding/json"
     7     "github.com/pkg/errors"
     8  )
     9  
    10  // EventTypes enumerates the list of event types
    11  type EventTypes struct {
    12  	All string
    13  	{{range .}}{{.Name}} string
    14  	{{end}}
    15  }
    16  
    17  // Events is the instance for grabbing event types
    18  var Events EventTypes
    19  
    20  func init() {
    21  	Events.All = "all"
    22  	{{range .}} Events.{{.Name}} = "{{.Event}}"
    23  	{{end}}
    24  }
    25  
    26  // DecodeEvent converts a JSON-encoded event to an ARI event.
    27  func DecodeEvent(data []byte) (Event,error) {
    28     // Decode the event type
    29     var typer Message
    30     err := json.Unmarshal(data, &typer)
    31     if err != nil {
    32       return nil, errors.Wrap(err, "failed to decode type")
    33     }
    34     if typer.Type == "" {
    35       return nil, errors.New("no type found")
    36     }
    37  
    38     switch typer.Type {
    39     {{range .}}case Events.{{.Name}}:
    40        var e {{.Name}}
    41        err = json.Unmarshal(data, &e)
    42        return &e, err
    43     {{end}}
    44     }
    45     return nil, errors.New("unhandled type: "+typer.Type)
    46  }
    47  
    48  {{range .}}
    49  // {{.Name}} - "{{.Description}}"
    50  type {{.Name}} struct {
    51     EventData `json:",inline"`
    52  
    53     // Header describes any transport-related metadata
    54     Header Header `json:"-"`
    55  
    56  	{{range .Properties}}{{.Name}} {{.Type}} {{.Mapping}} {{.Description}}
    57  	{{end}} }
    58  {{end}}
    59