UNPKG

@ai-growth/wordpress

Version:

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

152 lines (151 loc) 4.89 kB
import { AxiosRequestConfig } from 'axios'; import { IWordPressCredentials } from '../interfaces/WordPressInterfaces'; import { LogLevel, ILoggerOptions } from './Logger'; /** * 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; /** * 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; /** * 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; }