compression_gen.go 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. // this file was auto-generated by internal/cmd/gentypes/main.go: DO NOT EDIT
  2. package jwa
  3. import (
  4. "fmt"
  5. "sort"
  6. "sync"
  7. "github.com/pkg/errors"
  8. )
  9. // CompressionAlgorithm represents the compression algorithms as described in https://tools.ietf.org/html/rfc7518#section-7.3
  10. type CompressionAlgorithm string
  11. // Supported values for CompressionAlgorithm
  12. const (
  13. Deflate CompressionAlgorithm = "DEF" // DEFLATE (RFC 1951)
  14. NoCompress CompressionAlgorithm = "" // No compression
  15. )
  16. var allCompressionAlgorithms = map[CompressionAlgorithm]struct{}{
  17. Deflate: {},
  18. NoCompress: {},
  19. }
  20. var listCompressionAlgorithmOnce sync.Once
  21. var listCompressionAlgorithm []CompressionAlgorithm
  22. // CompressionAlgorithms returns a list of all available values for CompressionAlgorithm
  23. func CompressionAlgorithms() []CompressionAlgorithm {
  24. listCompressionAlgorithmOnce.Do(func() {
  25. listCompressionAlgorithm = make([]CompressionAlgorithm, 0, len(allCompressionAlgorithms))
  26. for v := range allCompressionAlgorithms {
  27. listCompressionAlgorithm = append(listCompressionAlgorithm, v)
  28. }
  29. sort.Slice(listCompressionAlgorithm, func(i, j int) bool {
  30. return string(listCompressionAlgorithm[i]) < string(listCompressionAlgorithm[j])
  31. })
  32. })
  33. return listCompressionAlgorithm
  34. }
  35. // Accept is used when conversion from values given by
  36. // outside sources (such as JSON payloads) is required
  37. func (v *CompressionAlgorithm) Accept(value interface{}) error {
  38. var tmp CompressionAlgorithm
  39. if x, ok := value.(CompressionAlgorithm); ok {
  40. tmp = x
  41. } else {
  42. var s string
  43. switch x := value.(type) {
  44. case fmt.Stringer:
  45. s = x.String()
  46. case string:
  47. s = x
  48. default:
  49. return errors.Errorf(`invalid type for jwa.CompressionAlgorithm: %T`, value)
  50. }
  51. tmp = CompressionAlgorithm(s)
  52. }
  53. if _, ok := allCompressionAlgorithms[tmp]; !ok {
  54. return errors.Errorf(`invalid jwa.CompressionAlgorithm value`)
  55. }
  56. *v = tmp
  57. return nil
  58. }
  59. // String returns the string representation of a CompressionAlgorithm
  60. func (v CompressionAlgorithm) String() string {
  61. return string(v)
  62. }