renderer.go 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. package front
  2. import (
  3. "notabug.org/apiote/amuse/tmdb"
  4. "notabug.org/apiote/amuse/wikidata"
  5. "golang.org/x/text/language"
  6. )
  7. type NoSuchRendererError struct {
  8. mimetype string
  9. }
  10. func (e NoSuchRendererError) Error() string {
  11. return "No renderer for " + e.mimetype
  12. }
  13. type Renderer interface {
  14. RenderFilm(*tmdb.Film, []language.Tag) string
  15. RenderSearch(*tmdb.SearchResults, *wikidata.SearchResults, []language.Tag) string
  16. RenderIndex(string, []language.Tag) string
  17. RenderTvSerie(*tmdb.TvSerie, []language.Tag) string
  18. RenderPerson(*tmdb.Person, []language.Tag) string
  19. RenderBook(wikidata.Book, []language.Tag) string
  20. RenderBookSerie(wikidata.BookSerie, []language.Tag) string
  21. RenderAbout([]language.Tag) string
  22. RenderErrorPage(int, []language.Tag) string
  23. RenderLogin([]language.Tag, error) string
  24. }
  25. func NewRenderer(mimetype string) (Renderer, error) {
  26. switch mimetype {
  27. case "text/html":
  28. return HtmlRenderer{}, nil
  29. case "application/capnproto":
  30. return CapnprotoRenderer{}, nil
  31. default:
  32. return nil, NoSuchRendererError{}
  33. }
  34. }