diff --git a/backend/src/federation/client/1_0/FederationClient.ts b/backend/src/federation/client/1_0/FederationClient.ts deleted file mode 100644 index 743d17348..000000000 --- a/backend/src/federation/client/1_0/FederationClient.ts +++ /dev/null @@ -1,44 +0,0 @@ -/* eslint-disable @typescript-eslint/no-unsafe-member-access */ -/* eslint-disable @typescript-eslint/no-unsafe-return */ -/* eslint-disable @typescript-eslint/no-unsafe-assignment */ -import { FederatedCommunity as DbFederatedCommunity } from '@entity/FederatedCommunity' -import { gql } from 'graphql-request' - -import { GraphQLGetClient } from '@/federation/client/GraphQLGetClient' -import { LogError } from '@/server/LogError' -import { backendLogger as logger } from '@/server/logger' - -export async function requestGetPublicKey( - dbCom: DbFederatedCommunity, -): Promise { - let endpoint = dbCom.endPoint.endsWith('/') ? dbCom.endPoint : dbCom.endPoint + '/' - endpoint = `${endpoint}${dbCom.apiVersion}/` - logger.info(`requestGetPublicKey with endpoint='${endpoint}'...`) - - const graphQLClient = GraphQLGetClient.getInstance(endpoint) - logger.debug(`graphQLClient=${JSON.stringify(graphQLClient)}`) - const query = gql` - query { - getPublicKey { - publicKey - } - } - ` - const variables = {} - - try { - const { data, errors, extensions, headers, status } = await graphQLClient.rawRequest( - query, - variables, - ) - logger.debug(`Response-Data:`, data, errors, extensions, headers, status) - if (data) { - logger.debug(`Response-PublicKey:`, data.getPublicKey.publicKey) - logger.info(`requestGetPublicKey processed successfully`) - return data.getPublicKey.publicKey - } - logger.warn(`requestGetPublicKey processed without response data`) - } catch (err) { - throw new LogError(`Request-Error:`, err) - } -} diff --git a/backend/src/federation/client/1_0/FederationClientImpl.ts b/backend/src/federation/client/1_0/FederationClientImpl.ts index deb2c959f..4bd194594 100644 --- a/backend/src/federation/client/1_0/FederationClientImpl.ts +++ b/backend/src/federation/client/1_0/FederationClientImpl.ts @@ -9,7 +9,7 @@ import { LogError } from '@/server/LogError' import { backendLogger as logger } from '@/server/logger' // eslint-disable-next-line import/no-relative-parent-imports -import { FederationClient, PublicInfo } from '../FederationClient' +import { FederationClient, PublicCommunityInfo } from '../FederationClient' export class FederationClientImpl implements FederationClient { public async requestGetPublicKey(dbCom: DbFederatedCommunity): Promise { @@ -45,16 +45,18 @@ export class FederationClientImpl implements FederationClient { } } - public async requestGetPublicInfo(dbCom: DbFederatedCommunity): Promise { + public async requestGetPublicCommunityInfo( + dbCom: DbFederatedCommunity, + ): Promise { let endpoint = dbCom.endPoint.endsWith('/') ? dbCom.endPoint : dbCom.endPoint + '/' endpoint = `${endpoint}${dbCom.apiVersion}/` - logger.info(`requestGetPublicInfo with endpoint='${endpoint}'...`) + logger.info(`requestGetPublicCommunityInfo with endpoint='${endpoint}'...`) const graphQLClient = GraphQLGetClient.getInstance(endpoint) logger.debug(`graphQLClient=${JSON.stringify(graphQLClient)}`) const query = gql` query { - getPublicInfo { + getPublicCommunityInfo { name description createdAt @@ -71,8 +73,8 @@ export class FederationClientImpl implements FederationClient { ) logger.debug(`Response-Data:`, data, errors, extensions, headers, status) if (data) { - logger.debug(`Response-PublicInfo:`, data.getPublicInfo.publicInfo) - logger.info(`requestGetPublicInfo processed successfully`) + logger.debug(`Response-PublicCommunityInfo:`, data.getPublicInfo.publicInfo) + logger.info(`requestGetPublicCommunityInfo processed successfully`) return data.getPublicInfo.publicInfo } logger.warn(`requestGetPublicInfo processed without response data`) diff --git a/backend/src/federation/client/1_1/FederationClient.ts b/backend/src/federation/client/1_1/FederationClient.ts deleted file mode 100644 index 35c88bf3b..000000000 --- a/backend/src/federation/client/1_1/FederationClient.ts +++ /dev/null @@ -1,44 +0,0 @@ -/* eslint-disable @typescript-eslint/no-unsafe-return */ -/* eslint-disable @typescript-eslint/no-unsafe-assignment */ -/* eslint-disable @typescript-eslint/no-unsafe-member-access */ -import { FederatedCommunity as DbFederatedCommunity } from '@entity/FederatedCommunity' -import { gql } from 'graphql-request' - -import { GraphQLGetClient } from '@/federation/client/GraphQLGetClient' -import { LogError } from '@/server/LogError' -import { backendLogger as logger } from '@/server/logger' - -export async function requestGetPublicKey( - dbCom: DbFederatedCommunity, -): Promise { - let endpoint = dbCom.endPoint.endsWith('/') ? dbCom.endPoint : dbCom.endPoint + '/' - endpoint = `${endpoint}${dbCom.apiVersion}/` - logger.info(`requestGetPublicKey with endpoint='${endpoint}'...`) - - const graphQLClient = GraphQLGetClient.getInstance(endpoint) - logger.debug(`graphQLClient=${JSON.stringify(graphQLClient)}`) - const query = gql` - query { - getPublicKey { - publicKey - } - } - ` - const variables = {} - - try { - const { data, errors, extensions, headers, status } = await graphQLClient.rawRequest( - query, - variables, - ) - logger.debug(`Response-Data:`, data, errors, extensions, headers, status) - if (data) { - logger.debug(`Response-PublicKey:`, data.getPublicKey.publicKey) - logger.info(`requestGetPublicKey processed successfully`) - return data.getPublicKey.publicKey - } - logger.warn(`requestGetPublicKey processed without response data`) - } catch (err) { - throw new LogError(`Request-Error:`, err) - } -} diff --git a/backend/src/federation/client/1_1/FederationClientImpl.ts b/backend/src/federation/client/1_1/FederationClientImpl.ts index 472edcdbd..14153723d 100644 --- a/backend/src/federation/client/1_1/FederationClientImpl.ts +++ b/backend/src/federation/client/1_1/FederationClientImpl.ts @@ -9,7 +9,7 @@ import { LogError } from '@/server/LogError' import { backendLogger as logger } from '@/server/logger' // eslint-disable-next-line import/no-relative-parent-imports -import { FederationClient, PublicInfo } from '../FederationClient' +import { FederationClient, PublicCommunityInfo } from '../FederationClient' export class FederationClientImpl implements FederationClient { async requestGetPublicKey(dbCom: DbFederatedCommunity): Promise { @@ -45,16 +45,18 @@ export class FederationClientImpl implements FederationClient { } } - async requestGetPublicInfo(dbCom: DbFederatedCommunity): Promise { + async requestGetPublicCommunityInfo( + dbCom: DbFederatedCommunity, + ): Promise { let endpoint = dbCom.endPoint.endsWith('/') ? dbCom.endPoint : dbCom.endPoint + '/' endpoint = `${endpoint}${dbCom.apiVersion}/` - logger.info(`requestGetPublicInfo with endpoint='${endpoint}'...`) + logger.info(`requestGetPublicCommunityInfo with endpoint='${endpoint}'...`) const graphQLClient = GraphQLGetClient.getInstance(endpoint) logger.debug(`graphQLClient=${JSON.stringify(graphQLClient)}`) const query = gql` query { - getPublicInfo { + getPublicCommunityInfo { name description createdAt @@ -71,9 +73,12 @@ export class FederationClientImpl implements FederationClient { ) logger.debug(`Response-Data:`, data, errors, extensions, headers, status) if (data) { - logger.debug(`Response-PublicInfo:`, data.getPublicInfo.publicInfo) + logger.debug( + `Response-PublicCommunityInfo:`, + data.getPublicCommunityInfo.publicCommunityInfo, + ) logger.info(`requestGetPublicInfo processed successfully`) - return data.getPublicInfo.publicInfo + return data.getPublicCommunityInfo.publicCommunityInfo } logger.warn(`requestGetPublicInfo processed without response data`) } catch (err) { diff --git a/backend/src/federation/client/FederationClient.ts b/backend/src/federation/client/FederationClient.ts index 3ddd80cfb..2af13e002 100644 --- a/backend/src/federation/client/FederationClient.ts +++ b/backend/src/federation/client/FederationClient.ts @@ -1,6 +1,6 @@ import { FederatedCommunity as DbFederatedCommunity } from '@entity/FederatedCommunity' -export type PublicInfo = { +export type PublicCommunityInfo = { name: string description: string createdAt: Date @@ -9,5 +9,7 @@ export type PublicInfo = { export interface FederationClient { requestGetPublicKey(dbCom: DbFederatedCommunity): Promise - requestGetPublicInfo(dbCom: DbFederatedCommunity): Promise + requestGetPublicCommunityInfo( + dbCom: DbFederatedCommunity, + ): Promise } diff --git a/backend/src/federation/validateCommunities.ts b/backend/src/federation/validateCommunities.ts index da8484318..1338279fd 100644 --- a/backend/src/federation/validateCommunities.ts +++ b/backend/src/federation/validateCommunities.ts @@ -11,7 +11,7 @@ import { backendLogger as logger } from '@/server/logger' import { FederationClientImpl as V1_0_FederationClientImpl } from './client/1_0/FederationClientImpl' // eslint-disable-next-line camelcase import { FederationClientImpl as V1_1_FederationClientImpl } from './client/1_1/FederationClientImpl' -import { FederationClient, PublicInfo } from './client/FederationClient' +import { FederationClient, PublicCommunityInfo } from './client/FederationClient' import { ApiVersionType } from './enum/apiVersionType' export function startValidateCommunities(timerInterval: number): void { @@ -58,9 +58,9 @@ export async function validateCommunities(): Promise { logger.debug(`Federation: updated dbCom: ${JSON.stringify(dbCom)}`) // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment - const pubInfo = await getVersionedFederationClient(dbCom.apiVersion).requestGetPublicInfo( - dbCom, - ) + const pubInfo = await getVersionedFederationClient( + dbCom.apiVersion, + ).requestGetPublicCommunityInfo(dbCom) logger.debug(`Federation: getPublicInfo pubInfo: ${JSON.stringify(pubInfo)}`) if (pubInfo) { logger.info(`Federation: write foreign community...`) @@ -91,7 +91,7 @@ export async function validateCommunities(): Promise { async function writeForeignCommunity( dbCom: DbFederatedCommunity, - pubInfo: PublicInfo, + pubInfo: PublicCommunityInfo, ): Promise { if (dbCom && pubInfo) { const foreignCom = DbCommunity.create() diff --git a/federation/src/graphql/api/1_0/model/GetPublicInfoResult.ts b/federation/src/graphql/api/1_0/model/GetPublicCommunityInfoResult.ts similarity index 93% rename from federation/src/graphql/api/1_0/model/GetPublicInfoResult.ts rename to federation/src/graphql/api/1_0/model/GetPublicCommunityInfoResult.ts index 102f446ba..bb36cdcda 100644 --- a/federation/src/graphql/api/1_0/model/GetPublicInfoResult.ts +++ b/federation/src/graphql/api/1_0/model/GetPublicCommunityInfoResult.ts @@ -4,7 +4,7 @@ import { Field, ObjectType } from 'type-graphql' @ObjectType() // eslint-disable-next-line @typescript-eslint/no-unused-vars -export class GetPublicInfoResult { +export class GetPublicCommunityInfoResult { constructor(dbCom: DbCommunity) { this.publicKey = dbCom.publicKey.toString('hex') this.name = dbCom.name diff --git a/federation/src/graphql/api/1_0/resolver/PublicCommunityInfoResolver.ts b/federation/src/graphql/api/1_0/resolver/PublicCommunityInfoResolver.ts new file mode 100644 index 000000000..31287c494 --- /dev/null +++ b/federation/src/graphql/api/1_0/resolver/PublicCommunityInfoResolver.ts @@ -0,0 +1,18 @@ +// eslint-disable-next-line @typescript-eslint/no-unused-vars +import { Query, Resolver } from 'type-graphql' +import { federationLogger as logger } from '@/server/logger' +import { Community as DbCommunity } from '@entity/Community' +import { GetPublicCommunityInfoResult } from '../model/GetPublicCommunityInfoResult' + +@Resolver() +// eslint-disable-next-line @typescript-eslint/no-unused-vars +export class PublicCommunityInfoResolver { + @Query(() => GetPublicCommunityInfoResult) + async getPublicCommunityInfo(): Promise { + logger.debug(`getPublicCommunityInfo() via apiVersion=1_0 ...`) + const homeCom = await DbCommunity.findOneOrFail({ foreign: false }) + const result = new GetPublicCommunityInfoResult(homeCom) + logger.info(`getPublicCommunityInfo()-1_0... return publicInfo=${result}`) + return result + } +} diff --git a/federation/src/graphql/api/1_0/resolver/PublicInfoResolver.ts b/federation/src/graphql/api/1_0/resolver/PublicInfoResolver.ts deleted file mode 100644 index ad988670b..000000000 --- a/federation/src/graphql/api/1_0/resolver/PublicInfoResolver.ts +++ /dev/null @@ -1,18 +0,0 @@ -// eslint-disable-next-line @typescript-eslint/no-unused-vars -import { Query, Resolver } from 'type-graphql' -import { federationLogger as logger } from '@/server/logger' -import { Community as DbCommunity } from '@entity/Community' -import { GetPublicInfoResult } from '../model/GetPublicInfoResult' - -@Resolver() -// eslint-disable-next-line @typescript-eslint/no-unused-vars -export class PublicInfoResolver { - @Query(() => GetPublicInfoResult) - async getPublicInfo(): Promise { - logger.debug(`getPublicInfo() via apiVersion=1_0 ...`) - const homeCom = await DbCommunity.findOneOrFail({ foreign: false }) - const result = new GetPublicInfoResult(homeCom) - logger.info(`getPublicInfo()-1_0... return publicInfo=${result}`) - return result - } -}