writer.go 678 B

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