renderer.go 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. package front
  2. import (
  3. "notabug.org/apiote/amuse/accounts"
  4. "notabug.org/apiote/amuse/datastructure"
  5. "notabug.org/apiote/amuse/tmdb"
  6. "notabug.org/apiote/amuse/wikidata"
  7. "golang.org/x/text/language"
  8. "github.com/pquerna/otp"
  9. )
  10. type NoSuchRendererError struct {
  11. mimetype string
  12. }
  13. func (e NoSuchRendererError) Error() string {
  14. return "No renderer for " + e.mimetype
  15. }
  16. type Renderer interface {
  17. RenderFilm(*tmdb.Film, []language.Tag) string
  18. RenderSearch(*tmdb.SearchResults, *wikidata.SearchResults, []language.Tag) string
  19. RenderIndex(string, []language.Tag) string
  20. RenderTvSerie(*tmdb.TvSerie, []language.Tag) string
  21. RenderPerson(*tmdb.Person, []language.Tag) string
  22. RenderBook(datastructure.Book, []language.Tag) string
  23. RenderBookSerie(wikidata.BookSerie, []language.Tag) string
  24. RenderAbout([]language.Tag) string
  25. RenderErrorPage(int, []language.Tag) string
  26. RenderLogin([]language.Tag, error, string) string
  27. RenderLoggedOut([]language.Tag) string
  28. RenderSignup([]language.Tag, error, *otp.Key, bool, string, string) string
  29. RenderSignedup([]language.Tag, []string) string
  30. RenderWatchlist(datastructure.Watchlist, []language.Tag) string
  31. RenderTvQueue(datastructure.TvQueue, []language.Tag) string
  32. RenderReadlist(datastructure.Readlist, []language.Tag) string
  33. RenderExperiences(datastructure.Experiences, []language.Tag) string
  34. }
  35. func NewRenderer(mimetype string, user accounts.User) (Renderer, error) {
  36. switch mimetype {
  37. case "text/html":
  38. return HtmlRenderer{user: user}, nil
  39. case "application/capnproto":
  40. return CapnprotoRenderer{}, nil
  41. default:
  42. return nil, NoSuchRendererError{}
  43. }
  44. }