0
0
Fork 0

fix: maybe there was some problem

This commit is contained in:
オスカー、 2025-01-12 18:14:38 +09:00
parent 7e7e06ccac
commit 4bd35d3390
No known key found for this signature in database
GPG key ID: 139D6573F92DA9F7
3 changed files with 37 additions and 16 deletions

View file

@ -3,7 +3,7 @@
* @author Xeltica * @author Xeltica
*/ */
import { BadRequestError, Body, CurrentUser, Delete, Get, JsonController, NotFoundError, OnUndefined, Param, Post, Put } from 'routing-controllers'; import { BadRequestError, ForbiddenError, Body, CurrentUser, Delete, Get, JsonController, NotFoundError, OnUndefined, Param, Post, Put } from 'routing-controllers';
import { IUser } from '../../common/types/user.js'; import { IUser } from '../../common/types/user.js';
import { Announcements } from '../models/index.js'; import { Announcements } from '../models/index.js';
import { AnnounceCreate } from './body/announce-create.js'; import { AnnounceCreate } from './body/announce-create.js';
@ -22,7 +22,7 @@ export class AnnouncementController {
@OnUndefined(204) @OnUndefined(204)
@Post() async post(@CurrentUser({ required: true }) user: IUser, @Body({required: true}) {title, body}: AnnounceCreate) { @Post() async post(@CurrentUser({ required: true }) user: IUser, @Body({required: true}) {title, body}: AnnounceCreate) {
if (!user.isAdmin) { if (!user.isAdmin) {
throw new BadRequestError('Not an Admin'); throw new ForbiddenError('Not an Admin');
} }
if (!title || !body) { if (!title || !body) {
throw new BadRequestError(); throw new BadRequestError();
@ -37,12 +37,19 @@ export class AnnouncementController {
@OnUndefined(204) @OnUndefined(204)
@Put() async update(@CurrentUser({ required: true }) user: IUser, @Body() {id, title, body}: AnnounceUpdate) { @Put() async update(@CurrentUser({ required: true }) user: IUser, @Body() {id, title, body}: AnnounceUpdate) {
if (!user.isAdmin) { if (!user.isAdmin) {
throw new BadRequestError('Not an Admin'); throw new ForbiddenError('Not an Admin');
} }
if (!id || !title || !body) { if (!id || !title || !body) {
throw new BadRequestError(); throw new BadRequestError();
} }
if (!(await Announcements.findOne(id))) {
const idNumber = Number(id);
if (isNaN(idNumber)) {
throw new BadRequestError();
}
if (!(await Announcements.findOne(idNumber))) {
throw new NotFoundError(); throw new NotFoundError();
} }
@ -55,18 +62,19 @@ export class AnnouncementController {
@OnUndefined(204) @OnUndefined(204)
@Post('/like/:id') async like(@CurrentUser({ required: true }) user: IUser, @Param('id') id: string) { @Post('/like/:id') async like(@CurrentUser({ required: true }) user: IUser, @Param('id') id: string) {
if (!user.isAdmin) { if (!user.isAdmin) {
throw new BadRequestError('Not an Admin'); throw new ForbiddenError('Not an Admin');
}
const idNumber = Number(id);
if (isNaN(idNumber)) {
throw new NotFoundError();
} }
if (!id) { if (!id) {
throw new BadRequestError(); throw new BadRequestError();
} }
const announcement = await Announcements.findOne(Number(idNumber)); const idNumber = Number(id);
if (isNaN(idNumber)) {
throw new BadRequestError();
}
const announcement = await Announcements.findOne(idNumber);
if (!announcement) { if (!announcement) {
throw new NotFoundError(); throw new NotFoundError();
} }
@ -80,20 +88,34 @@ export class AnnouncementController {
@Delete() async delete(@CurrentUser({ required: true }) user: IUser, @Body() {id}: IdProp) { @Delete() async delete(@CurrentUser({ required: true }) user: IUser, @Body() {id}: IdProp) {
if (!user.isAdmin) { if (!user.isAdmin) {
throw new BadRequestError('Not an Admin'); throw new ForbiddenError('Not an Admin');
} }
if (!id) { if (!id) {
throw new BadRequestError(); throw new BadRequestError();
} }
const idNumber = Number(id);
if (isNaN(idNumber)) {
throw new BadRequestError();
}
const announcement = await Announcements.findOne(idNumber);
if (!announcement) {
throw new NotFoundError();
}
await Announcements.delete(id); await Announcements.delete(id);
} }
@Get('/:id') async getDetail(@Param('id') id: string) { @Get('/:id') async getDetail(@Param('id') id: string) {
if (!id) {
throw new BadRequestError();
}
const idNumber = Number(id); const idNumber = Number(id);
if (isNaN(idNumber)) { if (isNaN(idNumber)) {
throw new NotFoundError(); throw new BadRequestError();
} }
const announcement = await Announcements.findOne(idNumber); const announcement = await Announcements.findOne(idNumber);
if (!announcement) { if (!announcement) {

View file

@ -18,7 +18,7 @@ export const api = async <T extends Record<string, unknown> = Record<string, unk
try { try {
data = await axios.post<T>(`https://${host}/api/${endpoint}`, a).then(res => res.data); data = await axios.post<T>(`https://${host}/api/${endpoint}`, a).then(res => res.data);
} catch (e) { } catch (e) {
printLog(`전송 오류: ${host}/api/${endpoint} - 재시도 중 (${i + 1} / ${RETRY_COUNT})\n${e}`, 'error'); printLog(`API 오류: ${host}/api/${endpoint} - 재시도 중 (${i + 1} / ${RETRY_COUNT})\n${e}`, 'error');
await delay(3000); await delay(3000);
continue; continue;
} }

View file

@ -34,9 +34,8 @@ export const sendAlert = async (user: User) => {
export const sendNoteAlert = async (text: string, user: User) => { export const sendNoteAlert = async (text: string, user: User) => {
const res = await api<Record<string, unknown>>(user.host, 'notes/create', { const res = await api<Record<string, unknown>>(user.host, 'notes/create', {
text, text,
visibility: user.visibility, visibility: user.visibility === 'users' ? 'specified' : user.visibility,
localOnly: user.localOnly, localOnly: user.localOnly
remoteFollowersOnly: user.remoteFollowersOnly,
}, user.token); }, user.token);
if (res.error) { if (res.error) {