101 lines
2.5 KiB
TypeScript
101 lines
2.5 KiB
TypeScript
/**
|
|
* Cloudflare Pages Function - 版本检查 API
|
|
* 访问路径: /api/version
|
|
*/
|
|
|
|
interface VersionInfo {
|
|
version: string;
|
|
forceUpdate: boolean;
|
|
updateMessage: string;
|
|
updateUrl: string;
|
|
minSupportVersion: string;
|
|
}
|
|
|
|
interface Env {
|
|
// 可以在这里添加环境变量类型
|
|
}
|
|
|
|
interface VersionConfig {
|
|
ios: VersionInfo;
|
|
android: VersionInfo;
|
|
browser: VersionInfo;
|
|
}
|
|
|
|
// 版本配置 - 直接在这里管理版本信息
|
|
const versionConfig: VersionConfig = {
|
|
ios: {
|
|
version: "0.0.4",
|
|
forceUpdate: false,
|
|
updateMessage: "修复了一些问题并优化了性能",
|
|
updateUrl: "https://apps.apple.com/app/id123456789",
|
|
minSupportVersion: "0.0.1",
|
|
},
|
|
android: {
|
|
version: "0.0.4",
|
|
forceUpdate: false,
|
|
updateMessage: "修复了一些问题并优化了性能",
|
|
updateUrl: "https://play.google.com/store/apps/details?id=riwa.ionic.app",
|
|
minSupportVersion: "0.0.1",
|
|
},
|
|
browser: {
|
|
version: "0.0.4",
|
|
forceUpdate: false,
|
|
updateMessage: "修复了一些问题并优化了性能",
|
|
updateUrl: "",
|
|
minSupportVersion: "0.0.1",
|
|
},
|
|
};
|
|
|
|
export const onRequestGet: PagesFunction<Env> = async (context) => {
|
|
try {
|
|
const { searchParams } = new URL(context.request.url);
|
|
const platform = searchParams.get("platform") || "browser";
|
|
|
|
// 验证平台参数
|
|
if (!["ios", "android", "browser"].includes(platform)) {
|
|
return new Response(
|
|
JSON.stringify({ error: "Invalid platform parameter" }),
|
|
{
|
|
status: 400,
|
|
headers: { "Content-Type": "application/json" },
|
|
},
|
|
);
|
|
}
|
|
|
|
// 获取对应平台的版本信息
|
|
const versionInfo = versionConfig[platform as keyof VersionConfig];
|
|
|
|
// 返回版本信息
|
|
return new Response(JSON.stringify(versionInfo), {
|
|
status: 200,
|
|
headers: {
|
|
"Content-Type": "application/json",
|
|
"Cache-Control": "public, max-age=300", // 缓存5分钟
|
|
"Access-Control-Allow-Origin": "*",
|
|
},
|
|
});
|
|
}
|
|
catch (error) {
|
|
console.error("Version check error:", error);
|
|
return new Response(
|
|
JSON.stringify({ error: "Internal server error" }),
|
|
{
|
|
status: 500,
|
|
headers: { "Content-Type": "application/json" },
|
|
},
|
|
);
|
|
}
|
|
};
|
|
|
|
// 支持 CORS 预检请求
|
|
export const onRequestOptions: PagesFunction<Env> = async () => {
|
|
return new Response(null, {
|
|
status: 204,
|
|
headers: {
|
|
"Access-Control-Allow-Origin": "*",
|
|
"Access-Control-Allow-Methods": "GET, OPTIONS",
|
|
"Access-Control-Allow-Headers": "Content-Type",
|
|
},
|
|
});
|
|
};
|