common.go 936 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. package libamuse
  2. import (
  3. "notabug.org/apiote/amuse/front"
  4. "notabug.org/apiote/gott"
  5. "golang.org/x/text/language"
  6. )
  7. type data interface {
  8. getLanguage() string
  9. getMimeType() string
  10. }
  11. func parseLanguage(args ...interface{}) (interface{}, error) {
  12. data := args[0].(data)
  13. tags, _, err := language.ParseAcceptLanguage(data.getLanguage())
  14. if tags == nil {
  15. tags = []language.Tag{}
  16. }
  17. if len(tags) == 0 {
  18. tags = append(tags, language.Make("en-GB"))
  19. }
  20. args[2] = tags
  21. return gott.Tuple(args), err
  22. }
  23. func createRenderer(args ...interface{}) (interface{}, error) {
  24. data := args[0].(data)
  25. renderer, err := front.NewRenderer(data.getMimeType())
  26. args[3] = renderer
  27. return gott.Tuple(args), err
  28. }
  29. type requestData struct {
  30. id string
  31. etag string
  32. language string
  33. mimetype string
  34. }
  35. func (d requestData) getLanguage() string {
  36. return d.language
  37. }
  38. func (d requestData) getMimeType() string {
  39. return d.mimetype
  40. }