mirror of
https://github.com/juherr/kill-the-news.git
synced 2026-08-05 17:14:16 +00:00
fix(websub): add missing WebSub Link header to Atom feed
The RSS feed already advertised hub and self via the Link response header, but the Atom feed was missing it entirely. Subscribers using Atom had no way to discover the hub for real-time push notifications. Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
This commit is contained in:
co-authored by
Claude Sonnet 4.6
parent
5723fd36f9
commit
bde06dd3e4
@@ -119,6 +119,14 @@ describe("Atom Feed Route", () => {
|
||||
const body = await res.text();
|
||||
expect(body).toContain(`/atom/${FEED_ID}`);
|
||||
});
|
||||
|
||||
it("Link header advertises hub and self for WebSub discovery", async () => {
|
||||
const res = await testApp.request(`/${FEED_ID}`, {}, mockEnv);
|
||||
const link = res.headers.get("Link") ?? "";
|
||||
expect(link).toContain(`rel="hub"`);
|
||||
expect(link).toContain(`/atom/${FEED_ID}`);
|
||||
expect(link).toContain(`rel="self"`);
|
||||
});
|
||||
});
|
||||
|
||||
describe("fallback config when no config in KV", () => {
|
||||
|
||||
@@ -51,11 +51,17 @@ export async function handle(c: Context): Promise<Response> {
|
||||
const baseUrl = `https://${env.DOMAIN}`;
|
||||
const atomXml = generateAtomFeed(feedConfig, emailsData, baseUrl, feedId);
|
||||
|
||||
const linkHeader = [
|
||||
`<${baseUrl}/hub>; rel="hub"`,
|
||||
`<${baseUrl}/atom/${feedId}>; rel="self"`,
|
||||
].join(", ");
|
||||
|
||||
return new Response(atomXml, {
|
||||
status: 200,
|
||||
headers: {
|
||||
"Content-Type": "application/atom+xml",
|
||||
"Cache-Control": "max-age=1800",
|
||||
Link: linkHeader,
|
||||
},
|
||||
});
|
||||
} catch (error) {
|
||||
|
||||
Reference in New Issue
Block a user