api.go 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  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. 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 *sessionstore.PGStore
  17. translator *ut.Translator
  18. }
  19. // New returns a new App instance
  20. func New(
  21. logger *lr.Logger,
  22. repo *repository.Repository,
  23. validator *validator.Validate,
  24. store *sessionstore.PGStore,
  25. ) *App {
  26. // for now, will just support the english translator from the
  27. // validator/translations package
  28. en := en.New()
  29. uni := ut.New(en, en)
  30. trans, _ := uni.GetTranslator("en")
  31. return &App{
  32. logger: logger,
  33. repo: repo,
  34. validator: validator,
  35. store: store,
  36. translator: &trans,
  37. }
  38. }
  39. // Logger returns the logger instance in use by App
  40. func (app *App) Logger() *lr.Logger {
  41. return app.logger
  42. }