rsshub
Version:
Make RSS Great Again!
109 lines (107 loc) • 4.38 kB
JavaScript
import { n as init_esm_shims, t as __dirname } from "./esm-shims-CzJ_djXG.mjs";
import "./config-C37vj7VH.mjs";
import "./dist-BInvbO1W.mjs";
import "./logger-Czu8UMNd.mjs";
import "./ofetch-BIyrKU3Y.mjs";
import { t as parseDate } from "./parse-date-BrP7mxXf.mjs";
import { t as cache_default } from "./cache-Bo__VnGm.mjs";
import "./helpers-DxBp0Pty.mjs";
import { t as art } from "./render-BQo6B4tL.mjs";
import { t as got_default } from "./got-KxxWdaxq.mjs";
import path from "node:path";
import markdownit from "markdown-it";
//#region lib/routes/app-center/release.ts
init_esm_shims();
const route = {
path: "/release/:user/:app/:distribution_group",
categories: ["program-update"],
example: "/app-center/release/cloudflare/1.1.1.1-windows/beta",
parameters: {
user: "User",
app: "App name",
distribution_group: "Distribution group"
},
features: {
requireConfig: false,
requirePuppeteer: false,
antiCrawler: false,
supportBT: false,
supportPodcast: false,
supportScihub: false
},
radar: [{ source: ["install.appcenter.ms/users/:user/apps/:app/distribution_groups/:distribution_group", "install.appcenter.ms/orgs/:user/apps/:app/distribution_groups/:distribution_group"] }],
name: "Release",
maintainers: ["Rongronggg9"],
handler,
description: `::: tip
The parameters can be extracted from the Release page URL: \`https://install.appcenter.ms/users/:user/apps/:app/distribution_groups/:distribution_group\`
:::`
};
async function handler(ctx) {
const user = ctx.req.param("user");
const app = ctx.req.param("app");
const distribution_group = ctx.req.param("distribution_group");
const apiUrl = `https://install.appcenter.ms/api/v0.1/apps/${user}/${app}/distribution_groups/${distribution_group}`;
const releasesListUrl = `${apiUrl}/public_releases?scope=tester`;
const link = `https://install.appcenter.ms/users/${user}/apps/${app}/distribution_groups/${distribution_group}`;
let items = (await got_default(releasesListUrl)).data.map((item) => ({
pubDate: parseDate(item.uploaded_at),
link: `${apiUrl}/releases/${item.id}?is_install_page=true`
}));
const md = new markdownit();
items = await Promise.all(items.map((item) => cache_default.tryGet(item.link, async () => {
const releaseInfo = (await got_default(item.link)).data;
const userName = releaseInfo.owner.display_name;
const appOS = releaseInfo.app_os;
const shortVersion = releaseInfo.short_version;
const versionCode = releaseInfo.version;
const isExternalBuild = releaseInfo.is_external_build;
const isMandatoryUpdate = releaseInfo.mandatory_update;
const sizeInMBytes = (releaseInfo.size / (1024 * 1024)).toFixed(2);
const releaseDate = releaseInfo.uploaded_at;
const fingerprint = releaseInfo.fingerprint;
const minOS = releaseInfo.min_os;
const androidMinApiLevel = releaseInfo.android_min_api_level;
const deviceFamily = releaseInfo.device_family;
const bundleId = releaseInfo.bundle_identifier;
const releaseNotes = releaseInfo.release_notes;
const downloadUrl = releaseInfo.download_url;
const installUrl = releaseInfo.install_url;
const fileExtension = releaseInfo.fileExtension;
const appName = releaseInfo.app_display_name;
const distributionGroupId = releaseInfo.distribution_group_id;
item._feed_title = `${appName} (${releaseInfo.distribution_groups.find((group) => group.id === distributionGroupId).display_name}) for ${appOS} by ${userName} - App Center Releases`;
item._feed_icon = releaseInfo.app_icon_url;
const version = shortVersion && versionCode ? `${shortVersion} (${versionCode})` : shortVersion || versionCode;
item.title = `${appName}: ` + (isMandatoryUpdate ? "[Mandatory]" : "") + (isExternalBuild ? "[External Build]" : "") + `Version ${version}`;
item.link = link;
item.author = userName;
item.description = art(path.join(__dirname, "templates/description-13bc6869.art"), {
releaseDate,
sizeInMBytes,
minOS,
deviceFamily,
androidMinApiLevel,
bundleId,
downloadUrl,
installUrl,
fingerprint,
appOS,
fileExtension,
releaseNotes: releaseNotes && md.render(releaseNotes)
}, { minimize: true });
item.guid = fingerprint;
return item;
})));
const icon = items && items[0]._feed_icon;
const title = items && items[0]._feed_title;
return {
title,
link,
description: title,
image: icon,
item: items
};
}
//#endregion
export { route };