error.go 715 B

123456789101112131415161718192021222324252627282930
  1. package libamuse
  2. import (
  3. "notabug.org/apiote/gott"
  4. )
  5. func renderErrorPage(args ...interface{}) interface{} {
  6. data := args[0].(*RequestData)
  7. result := args[1].(*Result)
  8. code := data.code
  9. err := data.err
  10. result.page = result.renderer.RenderErrorPage(code, err, result.languages)
  11. return gott.Tuple(args)
  12. }
  13. func ShowErrorPage(err error, code int, language, mimetype string) (string, error) {
  14. r, err := gott.
  15. NewResult(gott.Tuple{&RequestData{id: "", language: language, mimetype: mimetype, code: code, err: err}, &Result{}}).
  16. Bind(parseLanguage).
  17. Bind(createRenderer).
  18. Map(renderErrorPage).
  19. Finish()
  20. if err != nil {
  21. return "", err
  22. } else {
  23. return r.(gott.Tuple)[1].(*Result).page, nil
  24. }
  25. }