about summary refs log tree commit homepage
diff options
context:
space:
mode:
-rw-r--r--lib/PublicInbox/Feed.pm8
-rw-r--r--t/feed.t5
2 files changed, 9 insertions, 4 deletions
diff --git a/lib/PublicInbox/Feed.pm b/lib/PublicInbox/Feed.pm
index a8578e76..2dc3940f 100644
--- a/lib/PublicInbox/Feed.pm
+++ b/lib/PublicInbox/Feed.pm
@@ -36,7 +36,7 @@ sub generate {
                         href => $feed_opts->{atomurl} ||
                                 "http://example.com/atom.xml",
                 },
-                id => $addr || 'public-inbox@example.com',
+                id => 'mailto:' . ($addr || 'public-inbox@example.com'),
                 updated => POSIX::strftime(DATEFMT, gmtime),
         );
 
@@ -278,13 +278,17 @@ sub add_to_feed {
         my $date = $mime->header('Date');
         $date = PublicInbox::Hval->new_oneline($date);
         $date = feed_date($date->raw) or return 0;
+        $add =~ tr!/!!d;
+        my $h = '[a-f0-9]';
+        my (@uuid5) = ($add =~ m!\A($h{8})($h{4})($h{4})($h{4})($h{12})!o);
+
         $feed->add_entry(
                 author => { name => $name, email => $email },
                 title => $subject,
                 updated => $date,
                 content => { type => "html", content => $content },
                 link => $midurl . $href,
-                id => $add,
+                id => 'urn:uuid:' . join('-', @uuid5),
         );
         1;
 }
diff --git a/t/feed.t b/t/feed.t
index a6bffdcd..880716cc 100644
--- a/t/feed.t
+++ b/t/feed.t
@@ -58,7 +58,7 @@ EOF
                         my $p = XML::Feed->parse(\$feed);
                         is($p->format, "Atom", "parsed atom feed");
                         is(scalar $p->entries, 3, "parsed three entries");
-                        is($p->id, 'public-inbox@example.com',
+                        is($p->id, 'mailto:public-inbox@example.com',
                                 "id is set to default");
                 }
 
@@ -142,7 +142,8 @@ EOF
                 SKIP: {
                         skip 'XML::Feed missing', 3 unless $have_xml_feed;
                         my $p = XML::Feed->parse(\$feed);
-                        is($p->id, 'a@example.com', "ID is set correctly");
+                        is($p->id, 'mailto:a@example.com',
+                                "ID is set correctly");
                         is($p->format, "Atom", "parsed atom feed");
                         is(scalar $p->entries, 3, "parsed three entries");
                 }