endpoints.go 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. package shared
  2. import (
  3. "github.com/porter-dev/porter/api/server/shared/config"
  4. "github.com/porter-dev/porter/api/types"
  5. )
  6. type APIEndpoint struct {
  7. Metadata *types.APIRequestMetadata
  8. DecoderValidator RequestDecoderValidator
  9. Writer ResultWriter
  10. }
  11. type APIEndpointFactory interface {
  12. NewAPIEndpoint(metadata *types.APIRequestMetadata) *APIEndpoint
  13. GetDecoderValidator() RequestDecoderValidator
  14. GetResultWriter() ResultWriter
  15. }
  16. type APIObjectEndpointFactory struct {
  17. DecoderValidator RequestDecoderValidator
  18. ResultWriter ResultWriter
  19. }
  20. func NewAPIObjectEndpointFactory(conf *config.Config) APIEndpointFactory {
  21. decoderValidator := NewDefaultRequestDecoderValidator(conf.Logger, conf.Alerter)
  22. resultWriter := NewDefaultResultWriter(conf.Logger, conf.Alerter)
  23. return &APIObjectEndpointFactory{
  24. DecoderValidator: decoderValidator,
  25. ResultWriter: resultWriter,
  26. }
  27. }
  28. func (factory *APIObjectEndpointFactory) NewAPIEndpoint(
  29. metadata *types.APIRequestMetadata,
  30. ) *APIEndpoint {
  31. return &APIEndpoint{
  32. Metadata: metadata,
  33. DecoderValidator: factory.DecoderValidator,
  34. Writer: factory.ResultWriter,
  35. }
  36. }
  37. func (factory *APIObjectEndpointFactory) GetDecoderValidator() RequestDecoderValidator {
  38. return factory.DecoderValidator
  39. }
  40. func (factory *APIObjectEndpointFactory) GetResultWriter() ResultWriter {
  41. return factory.ResultWriter
  42. }