diff options
author | June McEnroe <june@causal.agency> | 2021-06-13 13:56:59 -0400 |
---|---|---|
committer | June McEnroe <june@causal.agency> | 2021-06-13 13:56:59 -0400 |
commit | 8aa4c82b81600cccd3d89baf3d489f0b7ef046ea (patch) | |
tree | 2d274374ba8b6f16f4163341b4c0f56fc8043ed8 | |
parent | Add search definition examples (diff) | |
download | bubger-1.1.tar.gz bubger-1.1.zip |
Add thr:in-reply-to elements to Atom entries 1.1
-rw-r--r-- | atom.c | 38 | ||||
-rw-r--r-- | bubger.1 | 9 |
2 files changed, 33 insertions, 14 deletions
diff --git a/atom.c b/atom.c index b49a2b7..782b265 100644 --- a/atom.c +++ b/atom.c @@ -34,17 +34,17 @@ #include "archive.h" -static char *atomID(const struct Envelope *envelope) { +static char *atomID(const char *messageID) { struct Variable vars[] = { - { "messageID", envelope->messageID }, + { "messageID", messageID }, {0}, }; return templateString("mid:[messageID]", vars, escapeURL); } -static char *atomEntryURL(const struct Envelope *envelope) { +static char *atomEntryURL(const char *messageID) { struct Variable vars[] = { - { "messageID", envelope->messageID }, + { "messageID", messageID }, { "type", "mbox" }, {0}, }; @@ -68,14 +68,18 @@ static int atomAuthor(FILE *file, struct Address addr) { } int atomEntryOpen(FILE *file, const struct Envelope *envelope) { - char *id = atomID(envelope); - char *url = atomEntryURL(envelope); + char *id = atomID(envelope->messageID); + char *url = atomEntryURL(envelope->messageID); + char *ref = (envelope->inReplyTo ? atomID(envelope->inReplyTo) : NULL); const char *template = Q( <entry> <id>[id]</id> <title>[title]</title> <updated>[updated]</updated> <link rel="alternate" type="application/mbox" href="[base][url]"/> + [+ref] + <thr:in-reply-to ref="[ref]"/> + [-] ); struct Variable vars[] = { { "id", id }, @@ -83,6 +87,7 @@ int atomEntryOpen(FILE *file, const struct Envelope *envelope) { { "updated", iso8601(envelope->time).s }, { "base", baseURL }, { "url", url }, + { "ref", ref }, {0}, }; int error = 0 @@ -90,6 +95,7 @@ int atomEntryOpen(FILE *file, const struct Envelope *envelope) { || atomAuthor(file, envelope->from); free(id); free(url); + free(ref); return error; } @@ -112,9 +118,9 @@ int atomEntryClose(FILE *file) { return templateRender(file, Q(</entry>), NULL, NULL); } -static char *atomThreadURL(const struct Envelope *envelope, const char *type) { +static char *atomThreadURL(const char *messageID, const char *type) { struct Variable vars[] = { - { "messageID", envelope->messageID }, + { "messageID", messageID }, { "type", type }, {0}, }; @@ -124,12 +130,14 @@ static char *atomThreadURL(const struct Envelope *envelope, const char *type) { #define XML_DECL "<?" Q(xml version="1.0" encoding="utf-8") "?>" int atomThreadOpen(FILE *file, const struct Envelope *envelope) { - char *id = atomID(envelope); - char *atom = atomThreadURL(envelope, "atom"); - char *html = atomThreadURL(envelope, "html"); - char *mbox = atomThreadURL(envelope, "mbox"); + char *id = atomID(envelope->messageID); + char *atom = atomThreadURL(envelope->messageID, "atom"); + char *html = atomThreadURL(envelope->messageID, "html"); + char *mbox = atomThreadURL(envelope->messageID, "mbox"); const char *template = XML_DECL Q( - <feed xmlns="http://www.w3.org/2005/Atom"> + <feed + xmlns="http://www.w3.org/2005/Atom" + xmlns:thr="http://purl.org/syndication/thread/1.0"> <generator uri="[generator]">bubger</generator> <id>[id]</id> <title>[title]</title> @@ -176,7 +184,9 @@ int atomIndexOpen(FILE *file, const char *name) { char *atom = atomIndexURL(name, "atom"); char *html = atomIndexURL(name, "html"); const char *template = XML_DECL Q( - <feed xmlns="http://www.w3.org/2005/Atom"> + <feed + xmlns="http://www.w3.org/2005/Atom" + xmlns:thr="http://purl.org/syndication/thread/1.0"> <generator uri="[generator]">bubger</generator> <id>[base][atom]</id> <title>[+name][name] - [-][title]</title> diff --git a/bubger.1 b/bubger.1 index 0e5d7fe..4edfd36 100644 --- a/bubger.1 +++ b/bubger.1 @@ -338,6 +338,15 @@ bubger TO "list+bubger@causal.agency" .%U https://tools.ietf.org/html/rfc4287 .%D December 2005 .Re +.It +.Rs +.%A J. Snell +.%T Atom Threading Extensions +.%I IETF +.%R RFC 4685 +.%U https://tools.ietf.org/html/rfc4685 +.%D September 2006 +.Re .El . .Sh AUTHORS |