endpoints.go 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. package shared
  2. import (
  3. "github.com/porter-dev/porter/api/server/requestutils"
  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. }
  14. type APIObjectEndpointFactory struct {
  15. decoderValidator RequestDecoderValidator
  16. resultWriter ResultWriter
  17. }
  18. func NewAPIObjectEndpointFactory(config *Config) APIEndpointFactory {
  19. validator := requestutils.NewDefaultValidator()
  20. decoder := requestutils.NewDefaultDecoder()
  21. decoderValidator := NewDefaultRequestDecoderValidator(config, validator, decoder)
  22. resultWriter := NewDefaultResultWriter(config)
  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. }