summaryrefslogtreecommitdiff
path: root/src/server/api/endpoints/federation
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2021-11-12 02:02:25 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2021-11-12 02:02:25 +0900
commit0e4a111f81cceed275d9bec2695f6e401fb654d8 (patch)
tree40874799472fa07416f17b50a398ac33b7771905 /src/server/api/endpoints/federation
parentupdate deps (diff)
downloadsharkey-0e4a111f81cceed275d9bec2695f6e401fb654d8.tar.gz
sharkey-0e4a111f81cceed275d9bec2695f6e401fb654d8.tar.bz2
sharkey-0e4a111f81cceed275d9bec2695f6e401fb654d8.zip
refactoring
Resolve #7779
Diffstat (limited to 'src/server/api/endpoints/federation')
-rw-r--r--src/server/api/endpoints/federation/dns.ts43
-rw-r--r--src/server/api/endpoints/federation/followers.ts51
-rw-r--r--src/server/api/endpoints/federation/following.ts51
-rw-r--r--src/server/api/endpoints/federation/instances.ts149
-rw-r--r--src/server/api/endpoints/federation/show-instance.ts29
-rw-r--r--src/server/api/endpoints/federation/update-remote-user.ts22
-rw-r--r--src/server/api/endpoints/federation/users.ts51
7 files changed, 0 insertions, 396 deletions
diff --git a/src/server/api/endpoints/federation/dns.ts b/src/server/api/endpoints/federation/dns.ts
deleted file mode 100644
index 7ba566301a..0000000000
--- a/src/server/api/endpoints/federation/dns.ts
+++ /dev/null
@@ -1,43 +0,0 @@
-import { promises as dns } from 'dns';
-import $ from 'cafy';
-import define from '../../define';
-import { Instances } from '@/models/index';
-import { toPuny } from '@/misc/convert-host';
-
-const resolver = new dns.Resolver();
-resolver.setServers(['1.1.1.1']);
-
-export const meta = {
- tags: ['federation'],
-
- requireCredential: false as const,
-
- params: {
- host: {
- validator: $.str
- }
- },
-};
-
-export default define(meta, async (ps, me) => {
- const instance = await Instances.findOneOrFail({ host: toPuny(ps.host) });
-
- const [
- resolved4,
- resolved6,
- resolvedCname,
- resolvedTxt,
- ] = await Promise.all([
- resolver.resolve4(instance.host).catch(() => []),
- resolver.resolve6(instance.host).catch(() => []),
- resolver.resolveCname(instance.host).catch(() => []),
- resolver.resolveTxt(instance.host).catch(() => []),
- ]);
-
- return {
- a: resolved4,
- aaaa: resolved6,
- cname: resolvedCname,
- txt: resolvedTxt,
- };
-});
diff --git a/src/server/api/endpoints/federation/followers.ts b/src/server/api/endpoints/federation/followers.ts
deleted file mode 100644
index 655e7b7b9a..0000000000
--- a/src/server/api/endpoints/federation/followers.ts
+++ /dev/null
@@ -1,51 +0,0 @@
-import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../define';
-import { Followings } from '@/models/index';
-import { makePaginationQuery } from '../../common/make-pagination-query';
-
-export const meta = {
- tags: ['federation'],
-
- requireCredential: false as const,
-
- params: {
- host: {
- validator: $.str
- },
-
- sinceId: {
- validator: $.optional.type(ID),
- },
-
- untilId: {
- validator: $.optional.type(ID),
- },
-
- limit: {
- validator: $.optional.num.range(1, 100),
- default: 10
- },
- },
-
- res: {
- type: 'array' as const,
- optional: false as const, nullable: false as const,
- items: {
- type: 'object' as const,
- optional: false as const, nullable: false as const,
- ref: 'Following',
- }
- },
-};
-
-export default define(meta, async (ps, me) => {
- const query = makePaginationQuery(Followings.createQueryBuilder('following'), ps.sinceId, ps.untilId)
- .andWhere(`following.followeeHost = :host`, { host: ps.host });
-
- const followings = await query
- .take(ps.limit!)
- .getMany();
-
- return await Followings.packMany(followings, me, { populateFollowee: true });
-});
diff --git a/src/server/api/endpoints/federation/following.ts b/src/server/api/endpoints/federation/following.ts
deleted file mode 100644
index 5b283581a6..0000000000
--- a/src/server/api/endpoints/federation/following.ts
+++ /dev/null
@@ -1,51 +0,0 @@
-import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../define';
-import { Followings } from '@/models/index';
-import { makePaginationQuery } from '../../common/make-pagination-query';
-
-export const meta = {
- tags: ['federation'],
-
- requireCredential: false as const,
-
- params: {
- host: {
- validator: $.str
- },
-
- sinceId: {
- validator: $.optional.type(ID),
- },
-
- untilId: {
- validator: $.optional.type(ID),
- },
-
- limit: {
- validator: $.optional.num.range(1, 100),
- default: 10
- },
- },
-
- res: {
- type: 'array' as const,
- optional: false as const, nullable: false as const,
- items: {
- type: 'object' as const,
- optional: false as const, nullable: false as const,
- ref: 'Following',
- }
- },
-};
-
-export default define(meta, async (ps, me) => {
- const query = makePaginationQuery(Followings.createQueryBuilder('following'), ps.sinceId, ps.untilId)
- .andWhere(`following.followerHost = :host`, { host: ps.host });
-
- const followings = await query
- .take(ps.limit!)
- .getMany();
-
- return await Followings.packMany(followings, me, { populateFollowee: true });
-});
diff --git a/src/server/api/endpoints/federation/instances.ts b/src/server/api/endpoints/federation/instances.ts
deleted file mode 100644
index cf5e44ebd5..0000000000
--- a/src/server/api/endpoints/federation/instances.ts
+++ /dev/null
@@ -1,149 +0,0 @@
-import $ from 'cafy';
-import config from '@/config/index';
-import define from '../../define';
-import { Instances } from '@/models/index';
-import { fetchMeta } from '@/misc/fetch-meta';
-
-export const meta = {
- tags: ['federation'],
-
- requireCredential: false as const,
-
- params: {
- host: {
- validator: $.optional.nullable.str,
- },
-
- blocked: {
- validator: $.optional.nullable.bool,
- },
-
- notResponding: {
- validator: $.optional.nullable.bool,
- },
-
- suspended: {
- validator: $.optional.nullable.bool,
- },
-
- federating: {
- validator: $.optional.nullable.bool,
- },
-
- subscribing: {
- validator: $.optional.nullable.bool,
- },
-
- publishing: {
- validator: $.optional.nullable.bool,
- },
-
- limit: {
- validator: $.optional.num.range(1, 100),
- default: 30
- },
-
- offset: {
- validator: $.optional.num.min(0),
- default: 0
- },
-
- sort: {
- validator: $.optional.str,
- }
- },
-
- res: {
- type: 'array' as const,
- optional: false as const, nullable: false as const,
- items: {
- type: 'object' as const,
- optional: false as const, nullable: false as const,
- ref: 'FederationInstance'
- }
- }
-};
-
-export default define(meta, async (ps, me) => {
- const query = Instances.createQueryBuilder('instance');
-
- switch (ps.sort) {
- case '+pubSub': query.orderBy('instance.followingCount', 'DESC').orderBy('instance.followersCount', 'DESC'); break;
- case '-pubSub': query.orderBy('instance.followingCount', 'ASC').orderBy('instance.followersCount', 'ASC'); break;
- case '+notes': query.orderBy('instance.notesCount', 'DESC'); break;
- case '-notes': query.orderBy('instance.notesCount', 'ASC'); break;
- case '+users': query.orderBy('instance.usersCount', 'DESC'); break;
- case '-users': query.orderBy('instance.usersCount', 'ASC'); break;
- case '+following': query.orderBy('instance.followingCount', 'DESC'); break;
- case '-following': query.orderBy('instance.followingCount', 'ASC'); break;
- case '+followers': query.orderBy('instance.followersCount', 'DESC'); break;
- case '-followers': query.orderBy('instance.followersCount', 'ASC'); break;
- case '+caughtAt': query.orderBy('instance.caughtAt', 'DESC'); break;
- case '-caughtAt': query.orderBy('instance.caughtAt', 'ASC'); break;
- case '+lastCommunicatedAt': query.orderBy('instance.lastCommunicatedAt', 'DESC'); break;
- case '-lastCommunicatedAt': query.orderBy('instance.lastCommunicatedAt', 'ASC'); break;
- case '+driveUsage': query.orderBy('instance.driveUsage', 'DESC'); break;
- case '-driveUsage': query.orderBy('instance.driveUsage', 'ASC'); break;
- case '+driveFiles': query.orderBy('instance.driveFiles', 'DESC'); break;
- case '-driveFiles': query.orderBy('instance.driveFiles', 'ASC'); break;
-
- default: query.orderBy('instance.id', 'DESC'); break;
- }
-
- if (typeof ps.blocked === 'boolean') {
- const meta = await fetchMeta(true);
- if (ps.blocked) {
- query.andWhere('instance.host IN (:...blocks)', { blocks: meta.blockedHosts });
- } else {
- query.andWhere('instance.host NOT IN (:...blocks)', { blocks: meta.blockedHosts });
- }
- }
-
- if (typeof ps.notResponding === 'boolean') {
- if (ps.notResponding) {
- query.andWhere('instance.isNotResponding = TRUE');
- } else {
- query.andWhere('instance.isNotResponding = FALSE');
- }
- }
-
- if (typeof ps.suspended === 'boolean') {
- if (ps.suspended) {
- query.andWhere('instance.isSuspended = TRUE');
- } else {
- query.andWhere('instance.isSuspended = FALSE');
- }
- }
-
- if (typeof ps.federating === 'boolean') {
- if (ps.federating) {
- query.andWhere('((instance.followingCount > 0) OR (instance.followersCount > 0))');
- } else {
- query.andWhere('((instance.followingCount = 0) AND (instance.followersCount = 0))');
- }
- }
-
- if (typeof ps.subscribing === 'boolean') {
- if (ps.subscribing) {
- query.andWhere('instance.followersCount > 0');
- } else {
- query.andWhere('instance.followersCount = 0');
- }
- }
-
- if (typeof ps.publishing === 'boolean') {
- if (ps.publishing) {
- query.andWhere('instance.followingCount > 0');
- } else {
- query.andWhere('instance.followingCount = 0');
- }
- }
-
- if (ps.host) {
- query.andWhere('instance.host like :host', { host: '%' + ps.host.toLowerCase() + '%' });
- }
-
- const instances = await query.take(ps.limit!).skip(ps.offset).getMany();
-
- return instances;
-});
diff --git a/src/server/api/endpoints/federation/show-instance.ts b/src/server/api/endpoints/federation/show-instance.ts
deleted file mode 100644
index f8352aefb3..0000000000
--- a/src/server/api/endpoints/federation/show-instance.ts
+++ /dev/null
@@ -1,29 +0,0 @@
-import $ from 'cafy';
-import define from '../../define';
-import { Instances } from '@/models/index';
-import { toPuny } from '@/misc/convert-host';
-
-export const meta = {
- tags: ['federation'],
-
- requireCredential: false as const,
-
- params: {
- host: {
- validator: $.str
- }
- },
-
- res: {
- type: 'object' as const,
- optional: false as const, nullable: false as const,
- ref: 'FederationInstance'
- }
-};
-
-export default define(meta, async (ps, me) => {
- const instance = await Instances
- .findOne({ host: toPuny(ps.host) });
-
- return instance;
-});
diff --git a/src/server/api/endpoints/federation/update-remote-user.ts b/src/server/api/endpoints/federation/update-remote-user.ts
deleted file mode 100644
index 580c3cb3d9..0000000000
--- a/src/server/api/endpoints/federation/update-remote-user.ts
+++ /dev/null
@@ -1,22 +0,0 @@
-import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../define';
-import { getRemoteUser } from '../../common/getters';
-import { updatePerson } from '@/remote/activitypub/models/person';
-
-export const meta = {
- tags: ['federation'],
-
- requireCredential: true as const,
-
- params: {
- userId: {
- validator: $.type(ID),
- },
- }
-};
-
-export default define(meta, async (ps) => {
- const user = await getRemoteUser(ps.userId);
- await updatePerson(user.uri!);
-});
diff --git a/src/server/api/endpoints/federation/users.ts b/src/server/api/endpoints/federation/users.ts
deleted file mode 100644
index 0e35df3e1c..0000000000
--- a/src/server/api/endpoints/federation/users.ts
+++ /dev/null
@@ -1,51 +0,0 @@
-import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../define';
-import { Users } from '@/models/index';
-import { makePaginationQuery } from '../../common/make-pagination-query';
-
-export const meta = {
- tags: ['federation'],
-
- requireCredential: false as const,
-
- params: {
- host: {
- validator: $.str
- },
-
- sinceId: {
- validator: $.optional.type(ID),
- },
-
- untilId: {
- validator: $.optional.type(ID),
- },
-
- limit: {
- validator: $.optional.num.range(1, 100),
- default: 10
- },
- },
-
- res: {
- type: 'array' as const,
- optional: false as const, nullable: false as const,
- items: {
- type: 'object' as const,
- optional: false as const, nullable: false as const,
- ref: 'User',
- }
- },
-};
-
-export default define(meta, async (ps, me) => {
- const query = makePaginationQuery(Users.createQueryBuilder('user'), ps.sinceId, ps.untilId)
- .andWhere(`user.host = :host`, { host: ps.host });
-
- const users = await query
- .take(ps.limit!)
- .getMany();
-
- return await Users.packMany(users, me, { detail: true });
-});