index.go 989 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. package libamuse
  2. import (
  3. "notabug.org/apiote/amuse/front"
  4. "notabug.org/apiote/amuse/tmdb"
  5. "notabug.org/apiote/gott"
  6. "golang.org/x/text/language"
  7. )
  8. func getRandomTitle(args ...interface{}) (interface{}, error) {
  9. languages := args[2].([]language.Tag)
  10. randomTitle, err := tmdb.GetRandomComedy(languages[0].String())
  11. args[1] = randomTitle
  12. return gott.Tuple(args), err
  13. }
  14. func renderIndex(args ...interface{}) interface{} {
  15. randomComedy := args[1].(string)
  16. languages := args[2].([]language.Tag)
  17. renderer := args[3].(front.Renderer)
  18. args[1] = renderer.RenderIndex(randomComedy, languages)
  19. return gott.Tuple(args)
  20. }
  21. func ShowIndex(language, mimetype string) (string, error) {
  22. result, err := gott.
  23. NewResult(gott.Tuple{requestData{"", "", language, mimetype}, nil, nil, nil}).
  24. Bind(parseLanguage).
  25. Bind(getRandomTitle).
  26. Bind(createRenderer).
  27. Map(renderIndex).
  28. Finish()
  29. if err != nil {
  30. return "", err
  31. } else {
  32. return result.(gott.Tuple)[1].(string), nil
  33. }
  34. }