mirror of
https://github.com/fluxerapp/fluxer
synced 2026-10-18 13:35:42 +09:00
refactor(api): collapse single-impl interfaces and facades (#3382)
This commit is contained in:
1 parent
e7b13fd19f
commit
c16d414d93
426 files changed
+2085
-6445
No files matched your search
@@ -2,16 +2,16 @@
|
||||
|
||||
import type {EmojiID, GuildID, UserID, WebhookID} from '@app/api/BrandedTypes';
|
||||
import {createEmojiID} from '@app/api/BrandedTypes';
|
||||
import type {IGuildRepositoryAggregate} from '@app/api/guild/repositories/IGuildRepositoryAggregate';
|
||||
import type {GuildRepository} from '@app/api/guild/repositories/GuildRepository';
|
||||
import type {LimitConfigService} from '@app/api/limits/LimitConfigService';
|
||||
import {resolveLimitSafe} from '@app/api/limits/LimitConfigUtils';
|
||||
import {createLimitMatchContext} from '@app/api/limits/LimitMatchContextBuilder';
|
||||
import type {GuildEmoji} from '@app/api/models/GuildEmoji';
|
||||
import type {IUserAccountRepository} from '@app/api/user/repositories/IUserAccountRepository';
|
||||
import type {UserRepository} from '@app/api/user/repositories/UserRepository';
|
||||
import {Permissions} from '@fluxer/constants/src/ChannelConstants';
|
||||
|
||||
type EmojiGuildRepository = Pick<IGuildRepositoryAggregate, 'getEmoji' | 'getEmojiById'>;
|
||||
type EmojiUserRepository = Pick<IUserAccountRepository, 'findUnique'>;
|
||||
type EmojiGuildRepository = Pick<GuildRepository, 'getEmoji' | 'getEmojiById'>;
|
||||
type EmojiUserRepository = Pick<UserRepository, 'findUnique'>;
|
||||
|
||||
const CUSTOM_EMOJI_MARKDOWN_REGEX = /<(a)?:([^:]+):(\d+)>/g;
|
||||
const CUSTOM_EMOJI_MARKDOWN_REGEX_GLOBAL = new RegExp(CUSTOM_EMOJI_MARKDOWN_REGEX.source, 'g');
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
import dns from 'node:dns';
|
||||
import {Config} from '@app/api/Config';
|
||||
import {extractClientIp} from '@fluxer/ip_utils/src/ClientIp';
|
||||
import {extractConfiguredClientIp} from '@app/api/utils/RequestClientIp';
|
||||
import type {ICacheService} from '@pkgs/cache/src/ICacheService';
|
||||
import type {GeoipResult} from '@pkgs/geoip/src/GeoipLookup';
|
||||
import {formatGeoipLocation, lookupGeoipByIp} from '@pkgs/geoip/src/GeoipLookup';
|
||||
@@ -16,17 +16,10 @@ interface GetIpAddressReverseOptions {
|
||||
cacheTtlSeconds?: number;
|
||||
}
|
||||
|
||||
function resolveRequestClientIp(req: Request): string | null {
|
||||
return extractClientIp(req, {
|
||||
trustClientIpHeader: Config.proxy.trust_client_ip_header,
|
||||
clientIpHeaderName: Config.proxy.client_ip_header,
|
||||
});
|
||||
}
|
||||
|
||||
export async function lookupGeoip(req: Request): Promise<GeoipResult>;
|
||||
export async function lookupGeoip(ip: string): Promise<GeoipResult>;
|
||||
export async function lookupGeoip(input: string | Request): Promise<GeoipResult> {
|
||||
const ip = typeof input === 'string' ? input : resolveRequestClientIp(input);
|
||||
const ip = typeof input === 'string' ? input : extractConfiguredClientIp(input);
|
||||
if (!ip) {
|
||||
return {countryCode: null, normalizedIp: null, city: null, region: null, countryName: null};
|
||||
}
|
||||
|
||||
@@ -1,8 +1,14 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import {Config} from '@app/api/Config';
|
||||
import type {APIConfig} from '@app/api/config/APIConfig';
|
||||
import type {HonoEnv} from '@app/api/types/HonoEnv';
|
||||
import {extractClientIp, MissingClientIpError, resolveClientIpHeaderName} from '@fluxer/ip_utils/src/ClientIp';
|
||||
import {
|
||||
extractClientIp,
|
||||
MissingClientIpError,
|
||||
requireClientIp,
|
||||
resolveClientIpHeaderName,
|
||||
} from '@fluxer/ip_utils/src/ClientIp';
|
||||
import type {Context} from 'hono';
|
||||
|
||||
export interface ClientIpResolution {
|
||||
@@ -32,11 +38,20 @@ export function resolveClientIpWithOptions(ctx: Context<HonoEnv>, options: Clien
|
||||
return ip;
|
||||
}
|
||||
|
||||
function proxyClientIpOptions(proxy: APIConfig['proxy']): ClientIpResolutionOptions {
|
||||
return {trustClientIpHeader: proxy.trust_client_ip_header, clientIpHeaderName: proxy.client_ip_header};
|
||||
}
|
||||
|
||||
export function extractConfiguredClientIp(request: Request): string | null {
|
||||
return extractClientIp(request, proxyClientIpOptions(Config.proxy));
|
||||
}
|
||||
|
||||
export function requireConfiguredClientIp(request: Request, proxy: APIConfig['proxy']): string {
|
||||
return requireClientIp(request, proxyClientIpOptions(proxy));
|
||||
}
|
||||
|
||||
export function getRequestClientIp(ctx: Context<HonoEnv>): string | null {
|
||||
return resolveClientIpWithOptions(ctx, {
|
||||
trustClientIpHeader: Config.proxy.trust_client_ip_header,
|
||||
clientIpHeaderName: Config.proxy.client_ip_header,
|
||||
});
|
||||
return resolveClientIpWithOptions(ctx, proxyClientIpOptions(Config.proxy));
|
||||
}
|
||||
|
||||
export function requireRequestClientIp(ctx: Context<HonoEnv>): string {
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import type {GuildID, UserID} from '@app/api/BrandedTypes';
|
||||
import type {IGuildRepositoryAggregate} from '@app/api/guild/repositories/IGuildRepositoryAggregate';
|
||||
import type {GuildRepository} from '@app/api/guild/repositories/GuildRepository';
|
||||
import type {Guild} from '@app/api/models/Guild';
|
||||
import type {Relationship} from '@app/api/models/Relationship';
|
||||
import type {IUserRepository} from '@app/api/user/IUserRepository';
|
||||
import type {UserRepository} from '@app/api/user/repositories/UserRepository';
|
||||
import {FriendSourceFlags, GroupDmAddPermissionFlags, RelationshipTypes} from '@fluxer/constants/src/UserConstants';
|
||||
import {MissingAccessError} from '@fluxer/errors/src/domains/core/MissingAccessError';
|
||||
import {FriendRequestBlockedError} from '@fluxer/errors/src/domains/user/FriendRequestBlockedError';
|
||||
|
||||
type UserPermissionRepository = Pick<IUserRepository, 'findSettings' | 'listRelationships' | 'getRelationship'>;
|
||||
type GuildPermissionRepository = Pick<IGuildRepositoryAggregate, 'listUserGuilds'>;
|
||||
type UserPermissionRepository = Pick<UserRepository, 'findSettings' | 'listRelationships' | 'getRelationship'>;
|
||||
type GuildPermissionRepository = Pick<GuildRepository, 'listUserGuilds'>;
|
||||
|
||||
export class UserPermissionUtils {
|
||||
constructor(
|
||||
|
||||
Reference in new issue
Block a user