Back
Version 7
2/14/2024
import { calculateFingerprint, fetchASP, getKeyId, parseLegacyAspeURI } from "https://esm.town/v/vladimyr/libasp";
import { badgen as createBadge, BadgenOptions } from "npm:badgen";
import { HTTPError } from "npm:ky";
type BadgeConfig = BadgenOptions & { _debug?: object };
export default async function(req: Request): Promise<Response> {
const reqURL = new URL(req.url);
const { format, debug } = Object.fromEntries(reqURL.searchParams.entries());
const aspeUri = reqURL.pathname.slice(1);
const badgeConfig = await getBadgeConfig(aspeUri, debug && debug !== "false");
if (format === "json") {
return Response.json({
schemaVersion: 1,
label: badgeConfig.label,
message: badgeConfig.status,
color: badgeConfig.color,
});
}
return new Response(createBadge(badgeConfig), {
headers: {
"content-type": "image/svg+xml",
},
});
}
async function getBadgeConfig(aspeUri: string, debug = false): Promise<BadgeConfig> {
const config: BadgeConfig = {
label: "ASP",
status: "",
color: "#6855c3",
};
try {
const { fingerprint, keyId } = await processAspeUri(aspeUri);
config.status = keyId;
if (debug) config._debug = { fingerprint };
vladimyr-aspbadge.web.val.run
Updated: March 8, 2024