Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions api/commits.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,19 +14,19 @@ const {
} = require("../src/svg-commits");
const { parseCardWidth } = require("../src/width");
const { getCache, setCache, clearCache } = require("../src/cache");
const { sendResponse } = require("../src/response");

const CACHE_TTL = 30 * 60 * 1000; // 30 minutes

module.exports = async (req, res) => {
res.setHeader("Access-Control-Allow-Origin", "*");
res.setHeader("Access-Control-Allow-Methods", "GET");
res.setHeader("Content-Type", "image/svg+xml");
res.setHeader("Cache-Control", "public, max-age=1800, s-maxage=1800, stale-while-revalidate=600");

const { username, theme, hide_border, layout, bg_color, title_color, text_color, border_color, title, width, refresh } = req.query;

if (!username) {
res.status(400).send(errorSVG("Missing username"));
sendResponse(req, res, errorSVG("Missing username"), 400);
return;
}

Expand Down Expand Up @@ -66,10 +66,10 @@ module.exports = async (req, res) => {
cardWidth: parseCardWidth(width, 460, 400, 1200),
});

res.status(200).send(svg);
sendResponse(req, res, svg);
} catch (error) {
console.error("Commits Error:", error.message);
res.status(200).send(errorSVG("Failed to load commits data"));
sendResponse(req, res, errorSVG("Failed to load commits data"), 200);
}
};

Expand Down
8 changes: 4 additions & 4 deletions api/contribution.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,19 +13,19 @@ const {
generateContributionPulseSVG,
} = require("../src/svg-contribution");
const { getCache, setCache, clearCache } = require("../src/cache");
const { sendResponse } = require("../src/response");

const CACHE_TTL = 30 * 60 * 1000; // 30 minutes

module.exports = async (req, res) => {
res.setHeader("Access-Control-Allow-Origin", "*");
res.setHeader("Access-Control-Allow-Methods", "GET");
res.setHeader("Content-Type", "image/svg+xml");
res.setHeader("Cache-Control", "public, max-age=1800, s-maxage=1800, stale-while-revalidate=600");

const { username, theme, hide_border, layout, bg_color, title_color, text_color, border_color, title, width, refresh } = req.query;

if (!username) {
res.status(400).send(errorSVG("Missing username"));
sendResponse(req, res, errorSVG("Missing username"), 400);
return;
}

Expand Down Expand Up @@ -85,10 +85,10 @@ module.exports = async (req, res) => {
hideBorder: hide_border === "true", title,
});

res.status(200).send(svg);
sendResponse(req, res, svg);
} catch (error) {
console.error("Contribution Error:", error.message);
res.status(200).send(errorSVG("Failed to load contribution data"));
sendResponse(req, res, errorSVG("Failed to load contribution data"), 200);
}
};

Expand Down
8 changes: 4 additions & 4 deletions api/issues.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,19 +10,19 @@ const { getTheme, applyColorOverrides } = require("../src/themes");
const { generateIssuesSVG } = require("../src/svg-issues");
const { parseCardWidth } = require("../src/width");
const { getCache, setCache, clearCache } = require("../src/cache");
const { sendResponse } = require("../src/response");

const CACHE_TTL = 30 * 60 * 1000; // 30 minutes

module.exports = async (req, res) => {
res.setHeader("Access-Control-Allow-Origin", "*");
res.setHeader("Access-Control-Allow-Methods", "GET");
res.setHeader("Content-Type", "image/svg+xml");
res.setHeader("Cache-Control", "public, max-age=1800, s-maxage=1800, stale-while-revalidate=600");

const { username, theme, hide_border, bg_color, title_color, text_color, border_color, width, refresh } = req.query;

if (!username) {
res.status(400).send(errorSVG("Missing username"));
sendResponse(req, res, errorSVG("Missing username"), 400);
return;
}

Expand Down Expand Up @@ -76,10 +76,10 @@ module.exports = async (req, res) => {
cardWidth: parseCardWidth(width, 460, 400, 1200),
});

res.status(200).send(svg);
sendResponse(req, res, svg);
} catch (error) {
console.error("Issues Stats Error:", error.message);
res.status(200).send(errorSVG("Failed to load issues data"));
sendResponse(req, res, errorSVG("Failed to load issues data"), 200);
}
};

Expand Down
8 changes: 4 additions & 4 deletions api/languages.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,13 @@ const {
generateLanguageDonutByCommitsSVG,
} = require("../src/svg-language");
const { getCache, setCache, clearCache } = require("../src/cache");
const { sendResponse } = require("../src/response");

const CACHE_TTL = 30 * 60 * 1000; // 30 minutes

module.exports = async (req, res) => {
res.setHeader("Access-Control-Allow-Origin", "*");
res.setHeader("Access-Control-Allow-Methods", "GET");
res.setHeader("Content-Type", "image/svg+xml");
res.setHeader("Cache-Control", "public, max-age=1800, s-maxage=1800, stale-while-revalidate=600");

const {
Expand All @@ -43,7 +43,7 @@ module.exports = async (req, res) => {
} = req.query;

if (!username) {
res.status(400).send(errorSVG("Missing username"));
sendResponse(req, res, errorSVG("Missing username"), 400);
return;
}

Expand Down Expand Up @@ -108,10 +108,10 @@ module.exports = async (req, res) => {
});
}

res.status(200).send(svg);
sendResponse(req, res, svg);
} catch (error) {
console.error("Language Error:", error.message);
res.status(200).send(errorSVG("Failed to load language data"));
sendResponse(req, res, errorSVG("Failed to load language data"), 200);
}
};

Expand Down
8 changes: 4 additions & 4 deletions api/master.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ const {
const { getTheme, applyColorOverrides } = require("../src/themes");
const { generateMasterCardSVG } = require("../src/svg-master");
const { getCache, setCache, clearCache } = require("../src/cache");
const { sendResponse } = require("../src/response");

const CACHE_TTL = 30 * 60 * 1000;

Expand All @@ -38,13 +39,12 @@ const safe = async (promise, fallback) => {
module.exports = async (req, res) => {
res.setHeader("Access-Control-Allow-Origin", "*");
res.setHeader("Access-Control-Allow-Methods", "GET");
res.setHeader("Content-Type", "image/svg+xml");
res.setHeader("Cache-Control", "public, max-age=1800, s-maxage=1800, stale-while-revalidate=600");

const { username, theme, hide_border, bg_color, title_color, text_color, border_color, refresh } = req.query;

if (!username) {
res.status(400).send(errorSVG("Missing username"));
sendResponse(req, res, errorSVG("Missing username"), 400);
return;
}

Expand Down Expand Up @@ -166,10 +166,10 @@ module.exports = async (req, res) => {
hideBorder: hide_border === "true",
});

res.status(200).send(svg);
sendResponse(req, res, svg);
} catch (error) {
console.error("Mastercard API Error:", error.message);
res.status(200).send(errorSVG("Failed to load dashboard data"));
sendResponse(req, res, errorSVG("Failed to load dashboard data"), 200);
}
};

Expand Down
6 changes: 3 additions & 3 deletions api/music.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,11 @@

const { getTheme, applyColorOverrides } = require("../src/themes");
const { generateMusicSVG } = require("../src/svg-music");
const { sendResponse } = require("../src/response");

module.exports = async (req, res) => {
res.setHeader("Access-Control-Allow-Origin", "*");
res.setHeader("Access-Control-Allow-Methods", "GET");
res.setHeader("Content-Type", "image/svg+xml");
res.setHeader("Cache-Control", "public, max-age=3600, s-maxage=3600, stale-while-revalidate=1800");

const {
Expand Down Expand Up @@ -40,10 +40,10 @@ module.exports = async (req, res) => {
hideBorder: hide_border === "true",
});

res.status(200).send(svg);
sendResponse(req, res, svg);
} catch (error) {
console.error("Music Card Error:", error.message);
res.status(200).send(errorSVG("Failed to load music card"));
sendResponse(req, res, errorSVG("Failed to load music card"), 200);
}
};

Expand Down
8 changes: 4 additions & 4 deletions api/overview.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ const {
const { getTheme, applyColorOverrides } = require("../src/themes");
const { generateOverviewSVG } = require("../src/svg-overview");
const { getCache, setCache, clearCache } = require("../src/cache");
const { sendResponse } = require("../src/response");

const CACHE_TTL = 30 * 60 * 1000;

Expand All @@ -35,13 +36,12 @@ function parseMaxPRs(value, defaultValue = 20, hardLimit = 50) {
module.exports = async (req, res) => {
res.setHeader("Access-Control-Allow-Origin", "*");
res.setHeader("Access-Control-Allow-Methods", "GET");
res.setHeader("Content-Type", "image/svg+xml");
res.setHeader("Cache-Control", "public, max-age=1800, s-maxage=1800, stale-while-revalidate=600");

const { username, theme, hide_border, bg_color, title_color, text_color, border_color, refresh, lines_scope, max_prs } = req.query;

if (!username) {
res.status(400).send(errorSVG("Missing username"));
sendResponse(req, res, errorSVG("Missing username"), 400);
return;
}

Expand Down Expand Up @@ -114,10 +114,10 @@ module.exports = async (req, res) => {
hideBorder: hide_border === "true",
});

res.status(200).send(svg);
sendResponse(req, res, svg);
} catch (error) {
console.error("Overview Error:", error.message);
res.status(200).send(errorSVG("Failed to load overview data"));
sendResponse(req, res, errorSVG("Failed to load overview data"), 200);
}
};

Expand Down
8 changes: 4 additions & 4 deletions api/pr-stats.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,19 +10,19 @@ const { getTheme, applyColorOverrides } = require("../src/themes");
const { generatePRCardSVG, generatePRSummarySVG } = require("../src/svg-pr");
const { parseCardWidth } = require("../src/width");
const { getCache, setCache, clearCache } = require("../src/cache");
const { sendResponse } = require("../src/response");

const CACHE_TTL = 30 * 60 * 1000; // 30 minutes

module.exports = async (req, res) => {
res.setHeader("Access-Control-Allow-Origin", "*");
res.setHeader("Access-Control-Allow-Methods", "GET");
res.setHeader("Content-Type", "image/svg+xml");
res.setHeader("Cache-Control", "public, max-age=1800, s-maxage=1800, stale-while-revalidate=600");

const { username, theme, hide_border, layout, bg_color, title_color, text_color, border_color, title, width, refresh } = req.query;

if (!username) {
res.status(400).send(errorSVG("Missing username"));
sendResponse(req, res, errorSVG("Missing username"), 400);
return;
}

Expand Down Expand Up @@ -100,10 +100,10 @@ module.exports = async (req, res) => {
cardWidth: parseCardWidth(width, 460, 400, 1200),
});

res.status(200).send(svg);
sendResponse(req, res, svg);
} catch (error) {
console.error("PR Stats Error:", error.message);
res.status(200).send(errorSVG("Failed to load PR data"));
sendResponse(req, res, errorSVG("Failed to load PR data"), 200);
}
};

Expand Down
8 changes: 4 additions & 4 deletions api/profile.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,19 +11,19 @@ const { getTheme, applyColorOverrides } = require("../src/themes");
const { generateProfileSVG } = require("../src/svg-profile");
const { parseCardWidth } = require("../src/width");
const { getCache, setCache, clearCache } = require("../src/cache");
const { sendResponse } = require("../src/response");

const CACHE_TTL = 2 * 60 * 60 * 1000; // 2 hours

module.exports = async (req, res) => {
res.setHeader("Access-Control-Allow-Origin", "*");
res.setHeader("Access-Control-Allow-Methods", "GET");
res.setHeader("Content-Type", "image/svg+xml");
res.setHeader("Cache-Control", "public, max-age=7200, s-maxage=7200, stale-while-revalidate=3600");

const { username, theme, hide_border, bg_color, title_color, text_color, border_color, width, refresh } = req.query;

if (!username) {
res.status(400).send(errorSVG("Missing username"));
sendResponse(req, res, errorSVG("Missing username"), 400);
return;
}

Expand Down Expand Up @@ -83,10 +83,10 @@ module.exports = async (req, res) => {
cardWidth: parseCardWidth(width, 460, 420, 1200),
});

res.status(200).send(svg);
sendResponse(req, res, svg);
} catch (error) {
console.error("Profile Error:", error.message);
res.status(200).send(errorSVG("Failed to load profile data"));
sendResponse(req, res, errorSVG("Failed to load profile data"), 200);
}
};

Expand Down
8 changes: 4 additions & 4 deletions api/streak.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,19 +10,19 @@ const { fetchContributionData, fetchTotalCommitCount } = require("../src/github"
const { getTheme, applyColorOverrides } = require("../src/themes");
const { generateStreakSVG } = require("../src/svg-streak");
const { getCache, setCache, clearCache } = require("../src/cache");
const { sendResponse } = require("../src/response");

const CACHE_TTL = 30 * 60 * 1000;

module.exports = async (req, res) => {
res.setHeader("Access-Control-Allow-Origin", "*");
res.setHeader("Access-Control-Allow-Methods", "GET");
res.setHeader("Content-Type", "image/svg+xml");
res.setHeader("Cache-Control", "public, max-age=1800, s-maxage=1800, stale-while-revalidate=600");

const { username, theme, hide_border, bg_color, title_color, text_color, border_color, refresh } = req.query;

if (!username) {
res.status(400).send(errorSVG("Missing username"));
sendResponse(req, res, errorSVG("Missing username"), 400);
return;
}

Expand Down Expand Up @@ -79,10 +79,10 @@ module.exports = async (req, res) => {
hideBorder: hide_border === "true",
});

res.status(200).send(svg);
sendResponse(req, res, svg);
} catch (error) {
console.error("Streak Error:", error.message);
res.status(200).send(errorSVG("Failed to load streak data"));
sendResponse(req, res, errorSVG("Failed to load streak data"), 200);
}
};

Expand Down
Loading
Loading