diff pkg/controllers/json.go @ 739:b800eb2a0846

JSON handler: if result is an io.Reader copyit through.
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Mon, 24 Sep 2018 12:35:31 +0200
parents d9dbb6139760
children 8bb2e48e2dfd
line wrap: on
line diff
--- a/pkg/controllers/json.go	Mon Sep 24 11:36:30 2018 +0200
+++ b/pkg/controllers/json.go	Mon Sep 24 12:35:31 2018 +0200
@@ -4,6 +4,7 @@
 	"database/sql"
 	"encoding/json"
 	"fmt"
+	"io"
 	"log"
 	"net/http"
 
@@ -109,7 +110,14 @@
 	}
 	rw.WriteHeader(jr.Code)
 	if jr.Code != http.StatusNoContent {
-		if err := json.NewEncoder(rw).Encode(jr.Result); err != nil {
+		var err error
+		r, ok := jr.Result.(io.Reader)
+		if ok {
+			_, err = io.Copy(rw, r)
+		} else {
+			err = json.NewEncoder(rw).Encode(jr.Result)
+		}
+		if err != nil {
 			log.Printf("error: %v\n", err)
 		}
 	}