Skip to content

Commit

Permalink
修改请求实现,支持网页端
Browse files Browse the repository at this point in the history
  • Loading branch information
2234839 committed Dec 20, 2023
1 parent d231436 commit 741aae4
Show file tree
Hide file tree
Showing 2 changed files with 63 additions and 47 deletions.
2 changes: 1 addition & 1 deletion plugin.json
Expand Up @@ -2,7 +2,7 @@
"name": "feed",
"author": "崮生_子虚",
"url": "https://github.com/2234839/feed_siyuan_plugin",
"version": "0.0.5",
"version": "0.0.6",
"minAppVersion": "2.10.3",
"backends": ["all"],
"frontends": ["all"],
Expand Down
108 changes: 62 additions & 46 deletions src/index.ts
Expand Up @@ -125,51 +125,67 @@ interface entry {
/** 从 rss 链接解析 feed 对象 */
async function parseFeedByUrl(url: string): Promise<feedByUrl | Error> {
url = url.trim();
const feed = await fetch(url)
.then((el) => el.text())
.then((data) => {
var parser = new DOMParser();
var xmlDoc = parser.parseFromString(data, "text/xml");
return xmlDoc;
})
.then((dom) => {
if (dom.querySelector("feed")) {
return {
title: elText(dom, "feed > title"),
subtitle: elText(dom, "feed > subtitle"),
updated: elText(dom, "feed > updated"),
entryList: Array.from(dom.querySelectorAll("feed > entry")).map((entry) => {
return {
title: elText(entry, "title"),
published: elText(entry, "published"),
updated: elText(entry, "updated"),
summary: elText(entry, "summary"),
link: xssDefend(entry.querySelector("link")?.getAttribute("href")),
} as entry;
}),
};
} else if (dom.querySelector("channel")) {
return {
title: elText(dom, "channel > title"),
subtitle: elText(dom, "channel > description"),
updated: elText(dom, "channel > lastBuildDate"),
entryList: Array.from(dom.querySelectorAll("channel > item")).map((entry) => {
return {
title: elText(entry, "title"),
published: elText(entry, "pubDate"),
updated: elText(entry, "updated"),
summary: elText(entry, "description"),
link: elText(entry, "link"),
} as entry;
}),
};
} else {
console.log("rss解析失败", url);
return new Error(
`未知的格式,可以将此消息发送给开发者 admin@shenzilong.cn (feed_siyuan_plugin):${url}`,
);
}
});
const feed = new Promise<Document>((r, _j) => {
fetchPost(
"/api/network/forwardProxy",
{
url: url,
method: "GET",
timeout: 7000,
contentType: "application/xml",
headers: [],
payload: {},
payloadEncoding: "text",
responseEncoding: "text",
},
(res) => {
if (res.code !== 0 && res.data.status !== 200) {
_j(new Error(res.msg));
} else {
var parser = new DOMParser();
var xmlDoc = parser.parseFromString(res.data.body, "text/xml");
r(xmlDoc);
}
},
);
}).then((dom) => {
if (dom.querySelector("feed")) {
return {
title: elText(dom, "feed > title"),
subtitle: elText(dom, "feed > subtitle"),
updated: elText(dom, "feed > updated"),
entryList: Array.from(dom.querySelectorAll("feed > entry")).map((entry) => {
return {
title: elText(entry, "title"),
published: elText(entry, "published"),
updated: elText(entry, "updated"),
summary: elText(entry, "summary"),
link: xssDefend(entry.querySelector("link")?.getAttribute("href")),
} as entry;
}),
};
} else if (dom.querySelector("channel")) {
return {
title: elText(dom, "channel > title"),
subtitle: elText(dom, "channel > description"),
updated: elText(dom, "channel > lastBuildDate"),
entryList: Array.from(dom.querySelectorAll("channel > item")).map((entry) => {
return {
title: elText(entry, "title"),
published: elText(entry, "pubDate"),
updated: elText(entry, "updated"),
summary: elText(entry, "description"),
link: elText(entry, "link"),
} as entry;
}),
};
} else {
console.log("rss解析失败", url);
return new Error(
`未知的格式,可以将此消息发送给开发者 admin@shenzilong.cn (feed_siyuan_plugin):${url}`,
);
}
});
return feed;
function elText(el: Element | Document, selectors: string) {
return xssDefend(el.querySelector(selectors)?.textContent);
Expand Down Expand Up @@ -268,7 +284,7 @@ function insertBlock(par: {
function sql(stmt: string): Promise<IWebSocketData> {
return new Promise((r, _j) => {
fetchPost(
"http://127.0.0.1:6806/api/query/sql",
"/api/query/sql",
{
stmt,
},
Expand Down

0 comments on commit 741aae4

Please sign in to comment.