From 6eb0ed68dd098d4b0a12986efbb2566dcba67e44 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Sybren=20A=2E=20St=C3=BCvel?= <sybren@stuvel.eu>
Date: Thu, 26 Jan 2017 18:02:49 +0100
Subject: [PATCH] Manager: /depsgraph: store & use Last-Modified header
 contents as string

When querying Server .../depsgraph, we just take the Last-Modified header
value as string, and store that without doing any parsing. This prevents
issues with timezones getting lost, formatting going wrong, etc.
---
 .../src/flamenco-manager/flamenco/documents.go      |  2 +-
 .../src/flamenco-manager/flamenco/upstream.go       | 13 ++++---------
 2 files changed, 5 insertions(+), 10 deletions(-)

diff --git a/packages/flamenco-manager-go/src/flamenco-manager/flamenco/documents.go b/packages/flamenco-manager-go/src/flamenco-manager/flamenco/documents.go
index 46ae3b5a..047ac4f1 100644
--- a/packages/flamenco-manager-go/src/flamenco-manager/flamenco/documents.go
+++ b/packages/flamenco-manager-go/src/flamenco-manager/flamenco/documents.go
@@ -105,7 +105,7 @@ type MayKeepRunningResponse struct {
 // Settings we want to be able to update from within Flamenco Manager itself,
 // so those are stored in MongoDB itself.
 type SettingsInMongo struct {
-	DepsgraphLastModified *time.Time `bson:"depsgraph_last_modified"`
+	DepsgraphLastModified *string `bson:"depsgraph_last_modified"`
 }
 
 type StatusReport struct {
diff --git a/packages/flamenco-manager-go/src/flamenco-manager/flamenco/upstream.go b/packages/flamenco-manager-go/src/flamenco-manager/flamenco/upstream.go
index c4e78d9d..b50dfcdd 100644
--- a/packages/flamenco-manager-go/src/flamenco-manager/flamenco/upstream.go
+++ b/packages/flamenco-manager-go/src/flamenco-manager/flamenco/upstream.go
@@ -158,9 +158,8 @@ func download_tasks_from_upstream(config *Conf, mongo_sess *mgo.Session) {
 	settings := GetSettings(db)
 	if settings.DepsgraphLastModified != nil {
 		log.Infof("Getting tasks from upstream Flamenco %s If-Modified-Since %s", get_url,
-			settings.DepsgraphLastModified)
-		req.Header.Set("If-Modified-Since",
-			settings.DepsgraphLastModified.Format(LastModifiedHeaderFormat))
+			*settings.DepsgraphLastModified)
+		req.Header.Set("If-Modified-Since", *settings.DepsgraphLastModified)
 	} else {
 		log.Infof("Getting tasks from upstream Flamenco %s", get_url)
 	}
@@ -227,12 +226,8 @@ func download_tasks_from_upstream(config *Conf, mongo_sess *mgo.Session) {
 	last_modified := resp.Header.Get("Last-Modified")
 	if last_modified != "" {
 		log.Info("Last modified task was at ", last_modified)
-		if parsed, err := time.Parse(LastModifiedHeaderFormat, last_modified); err != nil {
-			log.Errorf("Unable to parse Last-Modified header: ", err)
-		} else {
-			settings.DepsgraphLastModified = &parsed
-			SaveSettings(db, settings)
-		}
+		settings.DepsgraphLastModified = &last_modified
+		SaveSettings(db, settings)
 	}
 }
 
-- 
GitLab