UNPKG

rsshub

Version:
173 lines (172 loc) 4.09 kB
import { t as rofetch } from "./ofetch-C3ts-Hud.mjs"; import { t as config } from "./config-CCmw1BNE.mjs"; import { t as cache_default } from "./cache-BkqOokyU.mjs"; import { i as getList, n as getBuildId, r as getData, t as baseUrl } from "./utils-Cb3-YQMg.mjs"; //#region lib/routes/daily/user.ts const userPostQuery = ` query AuthorFeed($loggedIn: Boolean! = false, $userId: ID!, $after: String, $first: Int, $supportedTypes: [String!] = ["article", "share", "freeform", "video:youtube", "collection"]) { page: authorFeed(author: $userId, after: $after, first: $first, ranking: TIME, supportedTypes: $supportedTypes) { ...FeedPostConnection } } fragment FeedPostConnection on PostConnection { pageInfo { hasNextPage endCursor } edges { node { ...FeedPost contentHtml ...UserPost @include(if: $loggedIn) } } } fragment FeedPost on Post { ...SharedPostInfo sharedPost { ...SharedPostInfo } trending feedMeta collectionSources { handle image } numCollectionSources updatedAt slug } fragment SharedPostInfo on Post { id title titleHtml image readTime permalink commentsPermalink summary createdAt private upvoted commented bookmarked views numUpvotes numComments videoId scout { ...UserShortInfo } author { ...UserShortInfo } type tags source { ...SourceBaseInfo } downvoted flags { promoteToPublic } userState { vote flags { feedbackDismiss } } slug } fragment SourceBaseInfo on Source { id active handle name permalink public type description image membersCount privilegedMembers { user { id } role } currentMember { ...CurrentMember } memberPostingRole memberInviteRole } fragment CurrentMember on SourceMember { user { id } permissions role referralToken flags { hideFeedPosts collapsePinnedPosts } } fragment UserShortInfo on User { id name image permalink username bio createdAt reputation } fragment UserPost on Post { read upvoted commented bookmarked downvoted } `; const route = { path: "/user/:userId", example: "/daily/user/kramer", radar: [{ source: ["app.daily.dev/:userId/posts", "app.daily.dev/:userId"] }], name: "User Posts", maintainers: ["TonyRL"], handler, url: "app.daily.dev" }; async function handler(ctx) { const userId = ctx.req.param("userId"); const limit = ctx.req.query("limit") ? Number(ctx.req.query("limit")) : 7; const buildId = await getBuildId(); const user = (await cache_default.tryGet(`daily:user:${userId}`, async () => { return (await rofetch(`${baseUrl}/_next/data/${buildId}/en/${userId}.json`, { query: { userId } })).pageProps; })).user; const items = await cache_default.tryGet(`daily:user:${userId}:posts`, async () => { return getList(await getData({ query: userPostQuery, variables: { userId: user.id, first: limit, loggedIn: false } }), true); }, config.cache.routeExpire, false); return { title: `${user.name} | daily.dev`, description: user.bio, link: `${baseUrl}/${userId}/posts`, item: items, image: user.image, logo: user.image, icon: user.image, language: "en-us" }; } //#endregion export { route };