parent
4eb695f3c3
commit
48b53428d0
3 changed files with 11 additions and 53 deletions
|
@ -3,7 +3,7 @@ import { resolveUser } from "@/remote/resolve-user.js";
|
||||||
import Router from "@koa/router";
|
import Router from "@koa/router";
|
||||||
import { FindOptionsWhere, IsNull } from "typeorm";
|
import { FindOptionsWhere, IsNull } from "typeorm";
|
||||||
import { getClient } from "../ApiMastodonCompatibleService.js";
|
import { getClient } from "../ApiMastodonCompatibleService.js";
|
||||||
import { limitToInt } from "./timeline.js";
|
import { argsToBools, limitToInt } from "./timeline.js";
|
||||||
|
|
||||||
const relationshopModel = {
|
const relationshopModel = {
|
||||||
id: "",
|
id: "",
|
||||||
|
@ -118,7 +118,7 @@ export function apiAccountMastodon(router: Router): void {
|
||||||
try {
|
try {
|
||||||
const data = await client.getAccountStatuses(
|
const data = await client.getAccountStatuses(
|
||||||
ctx.params.id,
|
ctx.params.id,
|
||||||
limitToInt(ctx.query as any),
|
argsToBools(limitToInt(ctx.query as any)),
|
||||||
);
|
);
|
||||||
ctx.body = data.data;
|
ctx.body = data.data;
|
||||||
} catch (e: any) {
|
} catch (e: any) {
|
||||||
|
|
|
@ -12,6 +12,15 @@ export function limitToInt(q: ParsedUrlQuery) {
|
||||||
return q;
|
return q;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function argsToBools(q: ParsedUrlQuery) {
|
||||||
|
let object: any = q;
|
||||||
|
if (q.only_media)
|
||||||
|
if (typeof q.only_media === "string") object.only_media = q.only_media.toLowerCase() === "true";
|
||||||
|
if (q.exclude_replies)
|
||||||
|
if (typeof q.exclude_replies === "string") object.exclude_replies = q.exclude_replies.toLowerCase() === "true";
|
||||||
|
return q;
|
||||||
|
}
|
||||||
|
|
||||||
export function toTextWithReaction(status: Entity.Status[], host: string) {
|
export function toTextWithReaction(status: Entity.Status[], host: string) {
|
||||||
return status.map((t) => {
|
return status.map((t) => {
|
||||||
if (!t) return statusModel(null, null, [], "no content");
|
if (!t) return statusModel(null, null, [], "no content");
|
||||||
|
|
|
@ -30,59 +30,9 @@ import proxyServer from "./proxy/index.js";
|
||||||
import webServer from "./web/index.js";
|
import webServer from "./web/index.js";
|
||||||
import { initializeStreamingServer } from "./api/streaming.js";
|
import { initializeStreamingServer } from "./api/streaming.js";
|
||||||
import { koaBody } from "koa-body";
|
import { koaBody } from "koa-body";
|
||||||
import { ParsedUrlQuery } from "node:querystring";
|
|
||||||
|
|
||||||
export const serverLogger = new Logger("server", "gray", false);
|
export const serverLogger = new Logger("server", "gray", false);
|
||||||
|
|
||||||
const stringToBoolean = (stringValue: string) => {
|
|
||||||
switch(stringValue?.toLowerCase()?.trim()){
|
|
||||||
case "true":
|
|
||||||
case "yes":
|
|
||||||
case "1":
|
|
||||||
return true;
|
|
||||||
|
|
||||||
case "false":
|
|
||||||
case "no":
|
|
||||||
case "0":
|
|
||||||
case null:
|
|
||||||
case undefined:
|
|
||||||
return false;
|
|
||||||
|
|
||||||
default:
|
|
||||||
return JSON.parse(stringValue);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const objectParser = (object: Object): Object => {
|
|
||||||
const newObject: any = {};
|
|
||||||
|
|
||||||
for (const key in object) {
|
|
||||||
const value = object[key];
|
|
||||||
|
|
||||||
if (typeof value === "object") {
|
|
||||||
newObject[key] = objectParser(value);
|
|
||||||
} else if (typeof value === "string") {
|
|
||||||
newObject[key] = stringToBoolean(value);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return newObject;
|
|
||||||
};
|
|
||||||
|
|
||||||
const queryParser = (object: ParsedUrlQuery): ParsedUrlQuery => {
|
|
||||||
const newObject = object;
|
|
||||||
|
|
||||||
for (const key in object) {
|
|
||||||
const value = object[key];
|
|
||||||
|
|
||||||
if (typeof value === "string") {
|
|
||||||
newObject[key] = stringToBoolean(value);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return newObject;
|
|
||||||
};
|
|
||||||
|
|
||||||
// Init app
|
// Init app
|
||||||
const app = new Koa();
|
const app = new Koa();
|
||||||
app.proxy = true;
|
app.proxy = true;
|
||||||
|
@ -130,7 +80,6 @@ mastoRouter.use(
|
||||||
|
|
||||||
mastoRouter.use(async (ctx, next) => {
|
mastoRouter.use(async (ctx, next) => {
|
||||||
if (ctx.request.query) {
|
if (ctx.request.query) {
|
||||||
ctx.request.query = queryParser(ctx.request.query)
|
|
||||||
if (!ctx.request.body || Object.keys(ctx.request.body).length === 0) {
|
if (!ctx.request.body || Object.keys(ctx.request.body).length === 0) {
|
||||||
ctx.request.body = ctx.request.query
|
ctx.request.body = ctx.request.query
|
||||||
} else {
|
} else {
|
||||||
|
|
Loading…
Reference in a new issue