UNPKG

@ai-growth/n8n-nodes-wordpress

Version:

n8n node for WordPress integration with AI GROWTH - SEO WP plugin

201 lines (200 loc) 6.42 kB
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; }