changeset 5221:6794e85dc2dd new-fwa

Write headers.
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Tue, 12 May 2020 10:29:25 +0200
parents 142ac550bd9a
children 0ef27f10f9e2
files pkg/controllers/fwa.go
diffstat 1 files changed, 32 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/pkg/controllers/fwa.go	Tue May 12 10:15:32 2020 +0200
+++ b/pkg/controllers/fwa.go	Tue May 12 10:29:25 2020 +0200
@@ -16,6 +16,7 @@
 import (
 	"context"
 	"database/sql"
+	"encoding/csv"
 	"fmt"
 	"log"
 	"net/http"
@@ -198,10 +199,6 @@
 		return
 	}
 
-	// TODO: Use this.
-	availability := vars["type"] == "availability"
-	_ = availability
-
 	ctx := req.Context()
 	conn := middleware.GetDBConn(req)
 
@@ -278,6 +275,31 @@
 		return
 	}
 
+	availability := vars["type"] == "availability"
+
+	var record []string
+	if availability {
+		// in days
+		record = makeHeader(useDepth && useWidth, 1, breaks, 'd')
+	} else {
+		// percentage
+		record = makeHeader(useDepth && useWidth, 3, breaks, '%')
+	}
+
+	rw.Header().Add("Content-Type", "text/csv")
+
+	out := csv.NewWriter(rw)
+
+	if err := out.Write(record); err != nil {
+		// Too late for HTTP status message.
+		log.Printf("error: %v\n", err)
+		return
+	}
+
+	for i := range record[1:] {
+		record[i+1] = "0.0"
+	}
+
 	// For every day on every bottleneck we need to find out if this day is valid.
 	validities := make([]func(time.Time, time.Time) *limitingValidity, len(bottlenecks))
 	for i := range bottlenecks {
@@ -356,6 +378,12 @@
 	}
 
 	// TODO: Log missing LDCs
+
+	out.Flush()
+	if err := out.Error(); err != nil {
+		// Too late for HTTP status message.
+		log.Printf("error: %v\n", err)
+	}
 }
 
 func dusk(t time.Time) time.Time {