api.go 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. package api
  2. import (
  3. "github.com/go-playground/locales/en"
  4. ut "github.com/go-playground/universal-translator"
  5. "github.com/go-playground/validator/v10"
  6. "github.com/gorilla/sessions"
  7. lr "github.com/porter-dev/porter/internal/logger"
  8. "github.com/porter-dev/porter/internal/repository"
  9. )
  10. // App represents an API instance with handler methods attached, a DB connection
  11. // and a logger instance
  12. type App struct {
  13. logger *lr.Logger
  14. repo *repository.Repository
  15. validator *validator.Validate
  16. store sessions.Store
  17. translator *ut.Translator
  18. cookieName string
  19. }
  20. // New returns a new App instance
  21. func New(
  22. logger *lr.Logger,
  23. repo *repository.Repository,
  24. validator *validator.Validate,
  25. store sessions.Store,
  26. cookieName string,
  27. ) *App {
  28. // for now, will just support the english translator from the
  29. // validator/translations package
  30. en := en.New()
  31. uni := ut.New(en, en)
  32. trans, _ := uni.GetTranslator("en")
  33. return &App{
  34. logger: logger,
  35. repo: repo,
  36. validator: validator,
  37. store: store,
  38. translator: &trans,
  39. cookieName: cookieName,
  40. }
  41. }
  42. // Logger returns the logger instance in use by App
  43. func (app *App) Logger() *lr.Logger {
  44. return app.logger
  45. }