renderer.go 1006 B

12345678910111213141516171819202122232425262728293031323334353637383940
  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. }
  24. func NewRenderer(mimetype string) (Renderer, error) {
  25. switch mimetype {
  26. case "text/html":
  27. return HtmlRenderer{}, nil
  28. case "application/capnproto":
  29. return CapnprotoRenderer{}, nil
  30. default:
  31. return nil, NoSuchRendererError{}
  32. }
  33. }