mirror of
https://github.com/samuelthomas2774/nxapi.git
synced 2026-03-21 18:04:10 -05:00
Add scale option for PNG/JPEG/WEBP presence embeds
This commit is contained in:
parent
6fd0f3f2f1
commit
e697f86359
|
|
@ -1190,7 +1190,8 @@ class Server extends HttpServer {
|
|||
|
||||
const result = await this.handlePresenceRequest(req, null, presence_user_nsaid);
|
||||
|
||||
const {theme, friend_code, transparent, width, options} = getUserEmbedOptionsFromRequest(req);
|
||||
const {theme, friend_code, transparent, width, scale: req_scale, options} = getUserEmbedOptionsFromRequest(req);
|
||||
const scale = format === PresenceEmbedFormat.SVG ? 1 : req_scale;
|
||||
|
||||
const etag = createHash('sha256').update(JSON.stringify({
|
||||
result,
|
||||
|
|
@ -1198,6 +1199,7 @@ class Server extends HttpServer {
|
|||
friend_code,
|
||||
transparent,
|
||||
width,
|
||||
scale,
|
||||
options,
|
||||
v: version + '-' + git?.revision,
|
||||
})).digest('base64url');
|
||||
|
|
@ -1210,7 +1212,7 @@ class Server extends HttpServer {
|
|||
|
||||
const url_map = await this.getImages(result, this.getResourceBaseUrls(req));
|
||||
|
||||
const svg = renderUserEmbedSvg(result, url_map, theme, friend_code, options, 1, transparent, width);
|
||||
const svg = renderUserEmbedSvg(result, url_map, theme, friend_code, options, scale, transparent, width);
|
||||
const [image, type] = await renderUserEmbedImage(svg, format);
|
||||
|
||||
res.setHeader('Content-Type', type);
|
||||
|
|
|
|||
|
|
@ -102,7 +102,8 @@ class Server extends HttpServer {
|
|||
const [presence, user, data] = await getPresenceFromUrl(this.base_url + '/' + presence_user_nsaid + qs);
|
||||
const result = data as PresenceResponse;
|
||||
|
||||
const {theme, friend_code, transparent, width, options} = getUserEmbedOptionsFromRequest(req);
|
||||
const {theme, friend_code, transparent, width, scale: req_scale, options} = getUserEmbedOptionsFromRequest(req);
|
||||
const scale = format === PresenceEmbedFormat.SVG ? 1 : req_scale;
|
||||
|
||||
const etag = createHash('sha256').update(JSON.stringify({
|
||||
data,
|
||||
|
|
@ -111,6 +112,7 @@ class Server extends HttpServer {
|
|||
friend_code,
|
||||
transparent,
|
||||
width,
|
||||
scale,
|
||||
options,
|
||||
v: version + '-' + git?.revision,
|
||||
})).digest('base64url');
|
||||
|
|
@ -139,7 +141,7 @@ class Server extends HttpServer {
|
|||
url_map[url] = [url, data, type];
|
||||
}));
|
||||
|
||||
const svg = renderUserEmbedSvg(result, url_map, theme, friend_code, options, 1, transparent, width);
|
||||
const svg = renderUserEmbedSvg(result, url_map, theme, friend_code, options, scale, transparent, width);
|
||||
const [image, type] = await renderUserEmbedImage(svg, format);
|
||||
|
||||
res.setHeader('Content-Type', type);
|
||||
|
|
|
|||
|
|
@ -79,11 +79,15 @@ export function getUserEmbedOptionsFromRequest(req: Request) {
|
|||
if (!width) width = 500;
|
||||
if (width > 1500) width = 1500;
|
||||
|
||||
let scale = url.searchParams.getAll('scale')
|
||||
.map(s => parseInt(s))
|
||||
.find(s => !isNaN(s) && s >= 1 && s <= 4);
|
||||
|
||||
const options: UserEmbedOptions = {
|
||||
show_splatoon3_fest_team: url.searchParams.get('show-splatoon3-fest-team') === '1',
|
||||
};
|
||||
|
||||
return {theme, friend_code, transparent, width, options};
|
||||
return {theme, friend_code, transparent, width, scale, options};
|
||||
}
|
||||
|
||||
export async function renderUserEmbedImage(
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user