kerstreces openbaarde een leuke bug in de feed reader :-)
d176fe0b1b4ebc4011ccea12d947ed409de6c729
6 files changed
src/OpenKamer.DataModel/Feed.cssrc/OpenKamer.DataModel/tkData-v1-0.cssrc/OpenKamer.LogicControllers/EntityController.cssrc/OpenKamer.LogicControllers/FeedController.cssrc/OpenKamer.WebCore/Program.cssrc/OpenKamer.WinForm/Form1.cs
diff --git a/src/OpenKamer.DataModel/Feed.cs b/src/OpenKamer.DataModel/Feed.cs
index f454ee4..5892316 100644
--- a/src/OpenKamer.DataModel/Feed.cs
+++ b/src/OpenKamer.DataModel/Feed.cs
@@ -1,5 +1,5 @@
//
-// (c) 2022, Alphons van der Heijden
+// (c) 2022,2023 Alphons van der Heijden
// alphons@heijden.com
//
// https://opendata.tweedekamer.nl/documentatie/
diff --git a/src/OpenKamer.DataModel/tkData-v1-0.cs b/src/OpenKamer.DataModel/tkData-v1-0.cs
index cb95c50..868fb7b 100644
--- a/src/OpenKamer.DataModel/tkData-v1-0.cs
+++ b/src/OpenKamer.DataModel/tkData-v1-0.cs
@@ -1,7 +1,7 @@
//
-// (c) 2022, Alphons van der Heijden
+// (c) 2022,2023 Alphons van der Heijden
// alphons@heijden.com
-// Versie: 1.1
+// Versie: 1.2
//
// https://opendata.tweedekamer.nl/documentatie/
//
diff --git a/src/OpenKamer.LogicControllers/EntityController.cs b/src/OpenKamer.LogicControllers/EntityController.cs
index b7332f3..5062fac 100644
--- a/src/OpenKamer.LogicControllers/EntityController.cs
+++ b/src/OpenKamer.LogicControllers/EntityController.cs
@@ -1,5 +1,5 @@
//
-// (c) 2022, Alphons van der Heijden
+// (c) 2022,2023 Alphons van der Heijden
//
// https://opendata.tweedekamer.nl/documentatie/
//
diff --git a/src/OpenKamer.LogicControllers/FeedController.cs b/src/OpenKamer.LogicControllers/FeedController.cs
index 1f90afc..c0e9057 100644
--- a/src/OpenKamer.LogicControllers/FeedController.cs
+++ b/src/OpenKamer.LogicControllers/FeedController.cs
@@ -1,5 +1,5 @@
//
-// (c) 2022, Alphons van der Heijden
+// (c) 2022,2023 Alphons van der Heijden
//
// https://opendata.tweedekamer.nl/documentatie/
// https://opendata.tweedekamer.nl/documentatie/syncfeed-api
@@ -88,30 +88,56 @@ public class FeedController
Status = "saved";
}
- using var textReader = File.OpenText(FileName);
+ var textReader = File.OpenText(FileName);
xDoc = await XDocument.LoadAsync(textReader, LoadOptions.None, cancellationToken);
+ textReader.Dispose();
+
var links = xDoc.Descendants(ns + "link");
- var resumeNode = links.FirstOrDefault(x => x.Attribute("rel")?.Value == "resume");
+ var nodeSelf = links.FirstOrDefault(x => x.Attribute("rel")?.Value == "self");
+
+ var urlSelf = nodeSelf?.Attribute("href")?.Value;
+
+ var nodeResume = links.FirstOrDefault(x => x.Attribute("rel")?.Value == "resume");
+
+ var nodeNext = links.FirstOrDefault(x => x.Attribute("rel")?.Value == "next");
+
+ urlFeed = nodeNext?.Attribute("href")?.Value;
+
+ if(urlSelf == null)
+ {
+ Log("Self error, exit");
+ return;
+ }
- if(resumeNode != null)
+ if(this.Token!= "0" && !urlSelf.EndsWith(this.Token))
{
- Log("Resume exit");
+ Log("Incomplete, exit");
return;
}
- var nextNode = links.FirstOrDefault(x => x.Attribute("rel")?.Value == "next");
+ if (nodeResume != null)
+ {
+ if (Status == "cached")
+ {
+ File.Delete(FileName);
+ continue;
+ }
+ if (Status == "saved")
+ {
+ Log("Resume exit");
+ return;
+ }
+ }
- if (nextNode == null)
+ if (nodeNext == null)
{
Log("Normal exit");
return;
}
- urlFeed = nextNode.Attribute("href")?.Value;
-
if (urlFeed == null)
{
Log("Abnormal feed exit");
diff --git a/src/OpenKamer.WebCore/Program.cs b/src/OpenKamer.WebCore/Program.cs
index 3b512f2..a2cd064 100644
--- a/src/OpenKamer.WebCore/Program.cs
+++ b/src/OpenKamer.WebCore/Program.cs
@@ -1,5 +1,5 @@
//
-// (c) 2022, Alphons van der Heijden
+// (c) 2022,2023 Alphons van der Heijden
//
// https://opendata.tweedekamer.nl/documentatie/
//
diff --git a/src/OpenKamer.WinForm/Form1.cs b/src/OpenKamer.WinForm/Form1.cs
index 1108703..8012b01 100644
--- a/src/OpenKamer.WinForm/Form1.cs
+++ b/src/OpenKamer.WinForm/Form1.cs
@@ -1,5 +1,5 @@
//
-// (c) 2022, Alphons van der Heijden
+// (c) 2022,2023 Alphons van der Heijden
//
using System.Diagnostics;
@@ -194,6 +194,9 @@ public partial class Form1 : Form
var secondstogo = (this.feedController1.FilesTotal - this.feedController1.FilesIndex) * sw.ElapsedMilliseconds / (1 + this.feedController1.FilesIndex) / 1000;
+ if (secondstogo < 0)
+ secondstogo = 0;
+
var takes = new DateTimeOffset().AddSeconds(secondstogo);
this.lblDuration.Text = $"{takes.Hour:00}:{takes.Minute:00}:{takes.Second:00}";