endpoints.go 1.3 KB

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