@ai-growth/n8n-nodes-wordpress
Version:
n8n node for WordPress integration with AI GROWTH - SEO WP plugin
201 lines (200 loc) • 6.42 kB
TypeScript
import { AxiosRequestConfig } from 'axios';
import { IWordPressCredentials } from '../interfaces/WordPressInterfaces';
import { LogLevel, ILoggerOptions } from './Logger';
/**
* Interface para informações de rota descoberta
*/
export interface IRouteInfo {
endpoint: string;
methods: string[];
namespace: string;
version?: string;
}
/**
* Interface para resultado da descoberta de rotas
*/
export interface IRouteDiscoveryResult {
success: boolean;
routes: IRouteInfo[];
apiVersion: string;
availableVersions: string[];
error?: string;
}
/**
* Interface para resultado da detecção de versão da API
*/
export interface IApiVersionDetectionResult {
detectedVersion: string;
availableVersions: string[];
isSupported: boolean;
recommendedVersion?: string;
}
/**
* Opções de configuração para o cliente WordPress
*/
export interface IWordPressClientOptions {
/**
* Timeout para requisições em ms (padrão: 30000)
*/
timeout?: number;
/**
* Número máximo de tentativas para requisições que falham (padrão: 3)
*/
maxRetries?: number;
/**
* Tempo de espera entre tentativas em ms (padrão: 1000)
*/
retryDelay?: number;
/**
* Habilitar logs detalhados (padrão: false)
*/
debug?: boolean;
/**
* Versão da API REST do WordPress (padrão: 'v2')
*/
apiVersion?: string;
/**
* Opções de logging
*/
logOptions?: ILoggerOptions;
}
/**
* Cliente HTTP para a API REST do WordPress
* Encapsula o Axios e fornece métodos para interagir com a API
*/
export declare class WordPressClient {
private client;
private baseUrl;
private readonly options;
private credentials;
private readonly logger;
private readonly authManager;
private discoveredRoutes;
private routeDiscoveryCache;
private apiVersionDetected;
/**
* Construtor do cliente WordPress
* @param credentials Credenciais para acesso à API
* @param options Opções de configuração
*/
constructor(credentials: IWordPressCredentials, options?: IWordPressClientOptions);
/**
* Cria a instância do Axios com as configurações necessárias
* @returns Instância configurada do Axios
*/
private createAxiosInstance;
/**
* Configura interceptadores para request/response
*/
private setupInterceptors;
/**
* Executa uma requisição com suporte a retry
* @param requestFn Função que executa a requisição
* @returns Resultado da requisição
*/
private executeWithRetry;
/**
* Calcula o tempo de espera para o backoff exponencial
* @param attempt Número da tentativa atual (começando em 1)
* @returns Tempo de espera em ms
*/
private calculateBackoff;
/**
* Descobre as rotas disponíveis na API REST do WordPress
* @param forceRefresh Força uma nova descoberta ignorando o cache
* @returns Resultado da descoberta de rotas
*/
discoverRoutes(forceRefresh?: boolean): Promise<IRouteDiscoveryResult>;
/**
* Detecta automaticamente a versão da API mais adequada
* @returns Resultado da detecção de versão
*/
detectApiVersion(): Promise<IApiVersionDetectionResult>;
/**
* Valida se um endpoint específico está disponível
* @param endpoint Endpoint a ser validado (sem barra inicial)
* @param method Método HTTP (opcional, padrão: GET)
* @returns True se o endpoint estiver disponível
*/
validateEndpoint(endpoint: string, method?: string): Promise<boolean>;
/**
* Realiza uma requisição GET
* @param endpoint Endpoint da API (sem barra inicial)
* @param params Parâmetros da query string
* @returns Dados da resposta
*/
get<T = any>(endpoint: string, params?: Record<string, any>): Promise<T>;
/**
* Realiza uma requisição POST
* @param endpoint Endpoint da API (sem barra inicial)
* @param data Dados a serem enviados
* @returns Dados da resposta
*/
post<T = any>(endpoint: string, data: Record<string, any>): Promise<T>;
/**
* Realiza uma requisição POST com opções adicionais
* @param endpoint Endpoint da API (sem barra inicial)
* @param data Dados a serem enviados
* @param options Opções adicionais da requisição
* @returns Dados da resposta
*/
postWithOptions<T = any>(endpoint: string, data: any, options?: AxiosRequestConfig): Promise<T>;
/**
* Realiza uma requisição PUT
* @param endpoint Endpoint da API (sem barra inicial)
* @param data Dados a serem enviados
* @returns Dados da resposta
*/
put<T = any>(endpoint: string, data: Record<string, any>): Promise<T>;
/**
* Realiza uma requisição DELETE
* @param endpoint Endpoint da API (sem barra inicial)
* @returns Dados da resposta
*/
delete<T = any>(endpoint: string): Promise<T>;
/**
* Faz upload de um arquivo de mídia para o WordPress
* @param fileData Buffer com os dados do arquivo
* @param fileName Nome do arquivo
* @param mimeType Tipo MIME do arquivo
* @returns Informações do arquivo enviado
*/
uploadMedia<T = any>(fileData: Buffer, fileName: string, mimeType: string): Promise<T>;
/**
* Formata o endpoint removendo barras iniciais e duplicadas
* @param endpoint Endpoint a ser formatado
* @returns Endpoint formatado
*/
private formatEndpoint;
/**
* Obter URL base da API
* @returns URL base
*/
getBaseUrl(): string;
/**
* Obter versão da API
* @returns Versão da API
*/
getApiVersion(): string;
/**
* Definir nível de log
* @param level Nível de log
*/
setLogLevel(level: LogLevel): void;
/**
* Atualiza as credenciais do cliente
* @param credentials Novas credenciais
*/
updateCredentials(credentials: IWordPressCredentials): void;
/**
* Define um token de nonce para requisições que necessitam
* @param nonce Token de nonce
*/
setNonce(nonce: string): void;
/**
* Obtém um cabeçalho da última resposta recebida
* @param header Nome do cabeçalho
* @returns Valor do cabeçalho ou null se não existir
*/
getLastResponseHeader(header: string): string | null;
}