repo: merge new commits from main into develop
This commit is contained in:
commit
2a42ed38b6
6 changed files with 37 additions and 22 deletions
|
@ -106,6 +106,16 @@ export const runAPI = (express, app, __dirname) => {
|
||||||
app.post('/', apiLimiter);
|
app.post('/', apiLimiter);
|
||||||
app.use('/tunnel', apiLimiterStream);
|
app.use('/tunnel', apiLimiterStream);
|
||||||
|
|
||||||
|
app.post('/', (req, res, next) => {
|
||||||
|
if (!acceptRegex.test(req.header('Accept'))) {
|
||||||
|
return fail(res, "error.api.header.accept");
|
||||||
|
}
|
||||||
|
if (!acceptRegex.test(req.header('Content-Type'))) {
|
||||||
|
return fail(res, "error.api.header.content_type");
|
||||||
|
}
|
||||||
|
next();
|
||||||
|
});
|
||||||
|
|
||||||
app.post('/', (req, res, next) => {
|
app.post('/', (req, res, next) => {
|
||||||
if (!env.sessionEnabled) {
|
if (!env.sessionEnabled) {
|
||||||
return next();
|
return next();
|
||||||
|
@ -129,14 +139,6 @@ export const runAPI = (express, app, __dirname) => {
|
||||||
return fail(res, "error.api.auth.jwt.invalid");
|
return fail(res, "error.api.auth.jwt.invalid");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!acceptRegex.test(req.header('Accept'))) {
|
|
||||||
return fail(res, "error.api.header.accept");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!acceptRegex.test(req.header('Content-Type'))) {
|
|
||||||
return fail(res, "error.api.header.content_type");
|
|
||||||
}
|
|
||||||
|
|
||||||
req.authorized = true;
|
req.authorized = true;
|
||||||
} catch {
|
} catch {
|
||||||
return fail(res, "error.api.generic");
|
return fail(res, "error.api.generic");
|
||||||
|
|
|
@ -65,3 +65,14 @@ export function merge(a, b) {
|
||||||
|
|
||||||
return a;
|
return a;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function splitFilenameExtension(filename) {
|
||||||
|
const parts = filename.split('.');
|
||||||
|
const ext = parts.pop();
|
||||||
|
|
||||||
|
if (!parts.length) {
|
||||||
|
return [ ext, "" ]
|
||||||
|
} else {
|
||||||
|
return [ parts.join('.'), ext ]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -3,6 +3,7 @@ import createFilename from "./create-filename.js";
|
||||||
import { createResponse } from "./request.js";
|
import { createResponse } from "./request.js";
|
||||||
import { audioIgnore } from "./service-config.js";
|
import { audioIgnore } from "./service-config.js";
|
||||||
import { createStream } from "../stream/manage.js";
|
import { createStream } from "../stream/manage.js";
|
||||||
|
import { splitFilenameExtension } from "../misc/utils.js";
|
||||||
|
|
||||||
export default function({ r, host, audioFormat, isAudioOnly, isAudioMuted, disableMetadata, filenameStyle, twitterGif, requestIP, audioBitrate, alwaysProxy }) {
|
export default function({ r, host, audioFormat, isAudioOnly, isAudioMuted, disableMetadata, filenameStyle, twitterGif, requestIP, audioBitrate, alwaysProxy }) {
|
||||||
let action,
|
let action,
|
||||||
|
@ -32,10 +33,11 @@ export default function({ r, host, audioFormat, isAudioOnly, isAudioMuted, disab
|
||||||
}
|
}
|
||||||
|
|
||||||
if (action === "muteVideo" && isAudioMuted && !r.filenameAttributes) {
|
if (action === "muteVideo" && isAudioMuted && !r.filenameAttributes) {
|
||||||
const parts = r.filename.split(".");
|
const [ name, ext ] = splitFilenameExtension(r.filename);
|
||||||
const ext = parts.pop();
|
defaultParams.filename = `${name}_mute.${ext}`;
|
||||||
|
} else if (action === "gif") {
|
||||||
defaultParams.filename = `${parts.join(".")}_mute.${ext}`;
|
const [ name ] = splitFilenameExtension(r.filename);
|
||||||
|
defaultParams.filename = `${name}.gif`;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (action) {
|
switch (action) {
|
||||||
|
|
|
@ -176,7 +176,7 @@ export const services = {
|
||||||
Object.values(services).forEach(service => {
|
Object.values(services).forEach(service => {
|
||||||
service.patterns = service.patterns.map(
|
service.patterns = service.patterns.map(
|
||||||
pattern => new UrlPattern(pattern, {
|
pattern => new UrlPattern(pattern, {
|
||||||
segmentValueCharset: UrlPattern.defaultOptions.segmentValueCharset + '@\\.'
|
segmentValueCharset: UrlPattern.defaultOptions.segmentValueCharset + '@\\.:'
|
||||||
})
|
})
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
|
|
|
@ -291,7 +291,7 @@ const convertGif = (streamInfo, res) => {
|
||||||
const [,,, muxOutput] = process.stdio;
|
const [,,, muxOutput] = process.stdio;
|
||||||
|
|
||||||
res.setHeader('Connection', 'keep-alive');
|
res.setHeader('Connection', 'keep-alive');
|
||||||
res.setHeader('Content-Disposition', contentDisposition(streamInfo.filename.split('.')[0] + ".gif"));
|
res.setHeader('Content-Disposition', contentDisposition(streamInfo.filename));
|
||||||
|
|
||||||
pipe(muxOutput, res, shutdown);
|
pipe(muxOutput, res, shutdown);
|
||||||
|
|
||||||
|
|
|
@ -1401,7 +1401,7 @@
|
||||||
"bsky": [
|
"bsky": [
|
||||||
{
|
{
|
||||||
"name": "horizontal video",
|
"name": "horizontal video",
|
||||||
"url": "https://bsky.app/profile/haileyok.com/post/3l3giwtwp222m",
|
"url": "https://bsky.app/profile/did:plc:oisofpd7lj26yvgiivf3lxsi/post/3l3giwtwp222m",
|
||||||
"params": {},
|
"params": {},
|
||||||
"expected": {
|
"expected": {
|
||||||
"code": 200,
|
"code": 200,
|
||||||
|
@ -1410,7 +1410,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "horizontal video, recordWithMedia",
|
"name": "horizontal video, recordWithMedia",
|
||||||
"url": "https://bsky.app/profile/juicysteak117.gay/post/3l3wonhk23g2i",
|
"url": "https://bsky.app/profile/did:plc:ywbm3iywnhzep3ckt6efhoh7/post/3l3wonhk23g2i",
|
||||||
"params": {},
|
"params": {},
|
||||||
"expected": {
|
"expected": {
|
||||||
"code": 200,
|
"code": 200,
|
||||||
|
@ -1419,7 +1419,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "vertical video",
|
"name": "vertical video",
|
||||||
"url": "https://bsky.app/profile/haileyok.com/post/3l3jhpomhjk2m",
|
"url": "https://bsky.app/profile/did:plc:oisofpd7lj26yvgiivf3lxsi/post/3l3jhpomhjk2m",
|
||||||
"params": {},
|
"params": {},
|
||||||
"expected": {
|
"expected": {
|
||||||
"code": 200,
|
"code": 200,
|
||||||
|
@ -1428,7 +1428,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "vertical video (muted)",
|
"name": "vertical video (muted)",
|
||||||
"url": "https://bsky.app/profile/haileyok.com/post/3l3jhpomhjk2m",
|
"url": "https://bsky.app/profile/did:plc:oisofpd7lj26yvgiivf3lxsi/post/3l3jhpomhjk2m",
|
||||||
"params": {
|
"params": {
|
||||||
"downloadMode": "mute"
|
"downloadMode": "mute"
|
||||||
},
|
},
|
||||||
|
@ -1439,7 +1439,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "vertical video (audio)",
|
"name": "vertical video (audio)",
|
||||||
"url": "https://bsky.app/profile/haileyok.com/post/3l3jhpomhjk2m",
|
"url": "https://bsky.app/profile/did:plc:oisofpd7lj26yvgiivf3lxsi/post/3l3jhpomhjk2m",
|
||||||
"params": {
|
"params": {
|
||||||
"downloadMode": "audio"
|
"downloadMode": "audio"
|
||||||
},
|
},
|
||||||
|
@ -1450,7 +1450,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "single image",
|
"name": "single image",
|
||||||
"url": "https://bsky.app/profile/thehardyboycats.bsky.social/post/3l33flpoygt26",
|
"url": "https://bsky.app/profile/did:plc:k4a7d65fcyevbrnntjxh57go/post/3l33flpoygt26",
|
||||||
"params": {},
|
"params": {},
|
||||||
"expected": {
|
"expected": {
|
||||||
"code": 200,
|
"code": 200,
|
||||||
|
@ -1459,7 +1459,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "several images",
|
"name": "several images",
|
||||||
"url": "https://bsky.app/profile/tracey-m.bsky.social/post/3kzxuxbiul626",
|
"url": "https://bsky.app/profile/did:plc:rai7s6su2sy22ss7skouedl7/post/3kzxuxbiul626",
|
||||||
"params": {},
|
"params": {},
|
||||||
"expected": {
|
"expected": {
|
||||||
"code": 200,
|
"code": 200,
|
||||||
|
@ -1476,4 +1476,4 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue