endpoints.go 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. package model
  2. import (
  3. "bytes"
  4. "go/format"
  5. "io"
  6. "text/template"
  7. )
  8. // GenerateEndpoints writes a Go file to the given writer.
  9. func GenerateEndpoints(endpoints interface{}, w io.Writer) error {
  10. tmpl, err := template.New("endpoints").Parse(t)
  11. if err != nil {
  12. return err
  13. }
  14. out := bytes.NewBuffer(nil)
  15. if err := tmpl.Execute(out, endpoints); err != nil {
  16. return err
  17. }
  18. b, err := format.Source(bytes.TrimSpace(out.Bytes()))
  19. if err != nil {
  20. return err
  21. }
  22. _, err = io.Copy(w, bytes.NewReader(b))
  23. return err
  24. }
  25. const t = `
  26. package endpoints
  27. // THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT.
  28. type endpointStruct struct {
  29. Version int
  30. Endpoints map[string]endpointEntry
  31. }
  32. type endpointEntry struct {
  33. Endpoint string
  34. SigningRegion string
  35. }
  36. var endpointsMap = endpointStruct{
  37. Version: {{ .Version }},
  38. Endpoints: map[string]endpointEntry{
  39. {{ range $key, $entry := .Endpoints }}"{{ $key }}": endpointEntry{
  40. Endpoint: "{{ $entry.Endpoint }}",
  41. {{ if ne $entry.SigningRegion "" }}SigningRegion: "{{ $entry.SigningRegion }}",
  42. {{ end }}
  43. },
  44. {{ end }}
  45. },
  46. }
  47. `