Skip to content

Commit

Permalink
fix: Add catch all not a feed error
Browse files Browse the repository at this point in the history
  • Loading branch information
relekang committed Feb 14, 2025
1 parent 60beae9 commit 35281e5
Showing 1 changed file with 42 additions and 27 deletions.
69 changes: 42 additions & 27 deletions src/handlers/feed.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,9 @@
import { BaseError, EmptyParserOutputError } from "../errors";
import {
BaseError,
EmptyParserOutputError,
NotAFeedError,
ParserError,
} from "../errors";
import { parserKeys, parsers } from "../parsers";
import request from "../request";
import transform from "../transform";
Expand All @@ -18,7 +23,7 @@ export async function parseFromString({
parser?: ParserKey;
}): Promise<ParserResponse> {
if (parser) {
return parse(parser, content);
return await parse(parser, content);
}
for (let i = 0; i < parserKeys.length; i++) {
try {
Expand Down Expand Up @@ -55,31 +60,41 @@ export async function parseFromQuery({
const isJsonFeed = ["application/json", "application/feed+json"].includes(
contentType,
);
const parsed = await parseFromString({
content: response.text,
parser: isJsonFeed ? "JSON_FEED_V1" : parser,
});
const isXmlFeed =
["application/xml", "text/xml"].includes(contentType) &&
/application\/\w+\+xml/;
try {
const parsed = await parseFromString({
content: response.text,
parser: isJsonFeed ? "JSON_FEED_V1" : parser,
});

parsed.items = parsed.items?.filter((item) => {
if (item == null) {
return false;
}
if (
item.date_published &&
endTime &&
new Date(endTime) < new Date(item.date_published)
) {
return false;
}
if (
item.date_published &&
startTime &&
new Date(startTime) > new Date(item.date_published)
) {
return false;
parsed.items = parsed.items?.filter((item) => {
if (item == null) {
return false;
}
if (
item.date_published &&
endTime &&
new Date(endTime) < new Date(item.date_published)
) {
return false;
}
if (
item.date_published &&
startTime &&
new Date(startTime) > new Date(item.date_published)
) {
return false;
}
return true;
});
parsed.feed_url = parsed.feed_url || url;
return parsed;
} catch (error: any) {
if (error instanceof ParserError && !isJsonFeed && !isXmlFeed) {
throw new NotAFeedError();
}
return true;
});
parsed.feed_url = parsed.feed_url || url;
return parsed;
throw error;
}
}

0 comments on commit 35281e5

Please sign in to comment.