api.go 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  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. sessionstore "github.com/porter-dev/porter/internal/auth"
  7. "github.com/porter-dev/porter/internal/config"
  8. lr "github.com/porter-dev/porter/internal/logger"
  9. "github.com/porter-dev/porter/internal/repository"
  10. "helm.sh/helm/v3/pkg/storage"
  11. )
  12. // App represents an API instance with handler methods attached, a DB connection
  13. // and a logger instance
  14. type App struct {
  15. logger *lr.Logger
  16. repo *repository.Repository
  17. validator *validator.Validate
  18. store *sessionstore.PGStore
  19. translator *ut.Translator
  20. helmConf *config.HelmGlobalConf
  21. // HelmTestStorageDriver is used by testing libraries to query the in-memory
  22. // Helm storage driver
  23. HelmTestStorageDriver *storage.Storage
  24. cookieName string
  25. }
  26. // New returns a new App instance
  27. func New(
  28. logger *lr.Logger,
  29. repo *repository.Repository,
  30. validator *validator.Validate,
  31. store *sessionstore.PGStore,
  32. helmConf *config.HelmGlobalConf,
  33. cookieName string,
  34. ) *App {
  35. // for now, will just support the english translator from the
  36. // validator/translations package
  37. en := en.New()
  38. uni := ut.New(en, en)
  39. trans, _ := uni.GetTranslator("en")
  40. return &App{
  41. logger: logger,
  42. repo: repo,
  43. validator: validator,
  44. store: store,
  45. translator: &trans,
  46. helmConf: helmConf,
  47. cookieName: cookieName,
  48. }
  49. }
  50. // Logger returns the logger instance in use by App
  51. func (app *App) Logger() *lr.Logger {
  52. return app.logger
  53. }