renderer.go 830 B

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