writer.go 796 B

1234567891011121314151617181920212223242526272829303132
  1. package shared
  2. import (
  3. "context"
  4. "encoding/json"
  5. "net/http"
  6. "github.com/porter-dev/porter/api/server/shared/apierrors"
  7. "github.com/porter-dev/porter/api/server/shared/config"
  8. )
  9. type ResultWriter interface {
  10. WriteResult(ctx context.Context, w http.ResponseWriter, v interface{})
  11. }
  12. // default generalizes response codes for common operations
  13. // (http.StatusOK, http.StatusCreated, etc)
  14. type DefaultResultWriter struct {
  15. config *config.Config
  16. }
  17. func NewDefaultResultWriter(conf *config.Config) ResultWriter {
  18. return &DefaultResultWriter{conf}
  19. }
  20. func (j *DefaultResultWriter) WriteResult(ctx context.Context, w http.ResponseWriter, v interface{}) {
  21. err := json.NewEncoder(w).Encode(v)
  22. if err != nil {
  23. apierrors.HandleAPIError(ctx, j.config, w, apierrors.NewErrInternal(err))
  24. }
  25. }