summaryrefslogtreecommitdiff
path: root/packages/backend/src
diff options
context:
space:
mode:
authortamaina <tamaina@hotmail.co.jp>2023-02-14 07:25:29 +0000
committertamaina <tamaina@hotmail.co.jp>2023-02-14 07:25:29 +0000
commitd0aba46ee35fb224666ff135529fcd1acb4e8c54 (patch)
treede026de57b9e49d5e3f829b72c28fcd9fc2cbf1d /packages/backend/src
parentfix(client): ユーザーページのファイル付きTLはリプライも... (diff)
parentRevert "attempt matrix build (#9927)" (#9930) (diff)
downloadsharkey-d0aba46ee35fb224666ff135529fcd1acb4e8c54.tar.gz
sharkey-d0aba46ee35fb224666ff135529fcd1acb4e8c54.tar.bz2
sharkey-d0aba46ee35fb224666ff135529fcd1acb4e8c54.zip
Merge branch 'develop' of https://github.com/misskey-dev/misskey into develop
Diffstat (limited to 'packages/backend/src')
-rw-r--r--packages/backend/src/server/api/endpoints/clips/remove-note.ts144
-rw-r--r--packages/backend/src/server/web/UrlPreviewService.ts27
2 files changed, 89 insertions, 82 deletions
diff --git a/packages/backend/src/server/api/endpoints/clips/remove-note.ts b/packages/backend/src/server/api/endpoints/clips/remove-note.ts
index 55778c7ecb..5d88870ed2 100644
--- a/packages/backend/src/server/api/endpoints/clips/remove-note.ts
+++ b/packages/backend/src/server/api/endpoints/clips/remove-note.ts
@@ -1,72 +1,72 @@
-import { Inject, Injectable } from '@nestjs/common';
-import { Endpoint } from '@/server/api/endpoint-base.js';
-import type { ClipNotesRepository, ClipsRepository } from '@/models/index.js';
-import { DI } from '@/di-symbols.js';
-import { ApiError } from '../../error.js';
-import { GetterService } from '@/server/api/GetterService.js';
-
-export const meta = {
- tags: ['account', 'notes', 'clips'],
-
- requireCredential: true,
-
- kind: 'write:account',
-
- errors: {
- noSuchClip: {
- message: 'No such clip.',
- code: 'NO_SUCH_CLIP',
- id: 'b80525c6-97f7-49d7-a42d-ebccd49cfd52',
- },
-
- noSuchNote: {
- message: 'No such note.',
- code: 'NO_SUCH_NOTE',
- id: 'aff017de-190e-434b-893e-33a9ff5049d8',
- },
- },
-} as const;
-
-export const paramDef = {
- type: 'object',
- properties: {
- clipId: { type: 'string', format: 'misskey:id' },
- noteId: { type: 'string', format: 'misskey:id' },
- },
- required: ['clipId', 'noteId'],
-} as const;
-
-// eslint-disable-next-line import/no-default-export
-@Injectable()
-export default class extends Endpoint<typeof meta, typeof paramDef> {
- constructor(
- @Inject(DI.clipsRepository)
- private clipsRepository: ClipsRepository,
-
- @Inject(DI.clipNotesRepository)
- private clipNotesRepository: ClipNotesRepository,
-
- private getterService: GetterService,
- ) {
- super(meta, paramDef, async (ps, me) => {
- const clip = await this.clipsRepository.findOneBy({
- id: ps.clipId,
- userId: me.id,
- });
-
- if (clip == null) {
- throw new ApiError(meta.errors.noSuchClip);
- }
-
- const note = await this.getterService.getNote(ps.noteId).catch(err => {
- if (err.id === '9725d0ce-ba28-4dde-95a7-2cbb2c15de24') throw new ApiError(meta.errors.noSuchNote);
- throw err;
- });
-
- await this.clipNotesRepository.delete({
- noteId: note.id,
- clipId: clip.id,
- });
- });
- }
-}
+import { Inject, Injectable } from '@nestjs/common';
+import { Endpoint } from '@/server/api/endpoint-base.js';
+import type { ClipNotesRepository, ClipsRepository } from '@/models/index.js';
+import { DI } from '@/di-symbols.js';
+import { ApiError } from '../../error.js';
+import { GetterService } from '@/server/api/GetterService.js';
+
+export const meta = {
+ tags: ['account', 'notes', 'clips'],
+
+ requireCredential: true,
+
+ kind: 'write:account',
+
+ errors: {
+ noSuchClip: {
+ message: 'No such clip.',
+ code: 'NO_SUCH_CLIP',
+ id: 'b80525c6-97f7-49d7-a42d-ebccd49cfd52',
+ },
+
+ noSuchNote: {
+ message: 'No such note.',
+ code: 'NO_SUCH_NOTE',
+ id: 'aff017de-190e-434b-893e-33a9ff5049d8',
+ },
+ },
+} as const;
+
+export const paramDef = {
+ type: 'object',
+ properties: {
+ clipId: { type: 'string', format: 'misskey:id' },
+ noteId: { type: 'string', format: 'misskey:id' },
+ },
+ required: ['clipId', 'noteId'],
+} as const;
+
+// eslint-disable-next-line import/no-default-export
+@Injectable()
+export default class extends Endpoint<typeof meta, typeof paramDef> {
+ constructor(
+ @Inject(DI.clipsRepository)
+ private clipsRepository: ClipsRepository,
+
+ @Inject(DI.clipNotesRepository)
+ private clipNotesRepository: ClipNotesRepository,
+
+ private getterService: GetterService,
+ ) {
+ super(meta, paramDef, async (ps, me) => {
+ const clip = await this.clipsRepository.findOneBy({
+ id: ps.clipId,
+ userId: me.id,
+ });
+
+ if (clip == null) {
+ throw new ApiError(meta.errors.noSuchClip);
+ }
+
+ const note = await this.getterService.getNote(ps.noteId).catch(err => {
+ if (err.id === '9725d0ce-ba28-4dde-95a7-2cbb2c15de24') throw new ApiError(meta.errors.noSuchNote);
+ throw err;
+ });
+
+ await this.clipNotesRepository.delete({
+ noteId: note.id,
+ clipId: clip.id,
+ });
+ });
+ }
+}
diff --git a/packages/backend/src/server/web/UrlPreviewService.ts b/packages/backend/src/server/web/UrlPreviewService.ts
index 57461b7a33..2ce7293a52 100644
--- a/packages/backend/src/server/web/UrlPreviewService.ts
+++ b/packages/backend/src/server/web/UrlPreviewService.ts
@@ -1,5 +1,5 @@
import { Inject, Injectable } from '@nestjs/common';
-import summaly from 'summaly';
+import { summaly } from 'summaly';
import { DI } from '@/di-symbols.js';
import type { UsersRepository } from '@/models/index.js';
import type { Config } from '@/config.js';
@@ -30,7 +30,7 @@ export class UrlPreviewService {
}
@bindThis
- private wrap(url?: string): string | null {
+ private wrap(url?: string | null): string | null {
return url != null
? url.match(/^https?:\/\//)
? `${this.config.mediaProxy}/preview.webp?${query({
@@ -64,14 +64,21 @@ export class UrlPreviewService {
? `(Proxy) Getting preview of ${url}@${lang} ...`
: `Getting preview of ${url}@${lang} ...`);
try {
- const summary = meta.summalyProxy ? await this.httpRequestService.getJson<ReturnType<typeof summaly.default>>(`${meta.summalyProxy}?${query({
- url: url,
- lang: lang ?? 'ja-JP',
- })}`) : await summaly.default(url, {
- followRedirects: false,
- lang: lang ?? 'ja-JP',
- });
-
+ const summary = meta.summalyProxy ?
+ await this.httpRequestService.getJson<ReturnType<typeof summaly>>(`${meta.summalyProxy}?${query({
+ url: url,
+ lang: lang ?? 'ja-JP',
+ })}`)
+ :
+ await summaly(url, {
+ followRedirects: false,
+ lang: lang ?? 'ja-JP',
+ agent: {
+ http: this.httpRequestService.httpAgent,
+ https: this.httpRequestService.httpsAgent,
+ },
+ });
+
this.logger.succ(`Got preview of ${url}: ${summary.title}`);
if (summary.url && !(summary.url.startsWith('http://') || summary.url.startsWith('https://'))) {