summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJoe Carstairs <jcarstairs@scottlogic.com>2026-09-07 13:26:00 +0100
committerJoe Carstairs <jcarstairs@scottlogic.com>2026-09-07 13:26:00 +0100
commitc83ce5a0944fe254c996f77bd13e133c272d3cc9 (patch)
treecd48aafc18bfb9ae2f01a1c320411bcdd314950d /src
parentc1fc6b929dc0906c548f1af4c15f84b65b2d2ce6 (diff)
merge fetched RSS namespaces as much as possible and warn about conflicts to stderrHEADmain
Diffstat (limited to 'src')
-rw-r--r--src/main.rs21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/main.rs b/src/main.rs
index 2f1435b..1cc6c5c 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -58,6 +58,27 @@ fn generate_channel(urls: Vec<String>, config: Config) -> Channel {
let mut channel = make_new_empty_channel(config);
block_on(async {
retrieve(urls.iter().map(AsRef::as_ref)).await.for_each(|c| {
+ for (prefix, uri) in c.namespace {
+ let existing_namespace = channel.namespace.iter().find(|(p, u)| p == prefix);
+ if let Some(existing_namespace) = existing_namespace {
+ if existing_namespace.1.trim().len() == 0 {
+ existing_namespace.1 = uri;
+ } else if uri.len() > 0 {
+ eprintln!(
+ "Warning: channel {0} has namespace xmlns:{1}=\"{2}\", but the aggregated feed already has xmlns:{1}=\"{3}\". Ignoring.",
+ c.link,
+ prefix,
+ existing_namespace.1,
+ uri);
+ } else {
+ eprintln!(
+ "Appending namespace xmlns:{0}=\"{1}\" from channel {2}.",
+ prefix,
+ uri,
+ c.link);
+ channel.namespace.insert(prefix, uri);
+ }
+ }
channel.items.append(&mut items_with_source(c));
future::ready(())
}).await;