writer.go 775 B

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