| | |
| | | array $options = [] |
| | | ): array|WP_Error |
| | | { |
| | | if (!$this->is_healthy) { |
| | | $this->logDebug('Skipping request - integration is unhealthy', [ |
| | | 'consecutive_errors' => $this->error_stats['consecutive_errors'], |
| | | 'last_success' => $this->error_stats['last_success'] |
| | | ]); |
| | | } |
| | | $this->ensureInitialized(); |
| | | if (!$this->isSetUp()){ |
| | | $this->logError('Connection not setup for '.$this->service_name, [ |
| | |
| | | return false; |
| | | } |
| | | |
| | | // Build refresh request data |
| | | $request_data = [ |
| | | 'client_id' => $this->credentials['client_id'], |
| | | 'client_secret' => $this->credentials['client_secret'], |
| | |
| | | 'grant_type' => 'refresh_token' |
| | | ]; |
| | | |
| | | // Use centralized OAuth request method |
| | | $response = $this->makeOAuthRequest('POST', $this->oauth['token'], $request_data); |
| | | |
| | | if (is_wp_error($response)) { |
| | | $error_message = $response->get_error_message(); |
| | | |
| | | if (str_contains($error_message, 'invalid_grant')) { |
| | | $this->logError('OAuth refresh token is invalid - user must re-authorize', [ |
| | | 'error' => $error_message |
| | | ], 'critical'); |
| | | |
| | | // Mark unhealthy immediately |
| | | $this->error_stats['consecutive_errors'] = $this->error_threshold; |
| | | $this->is_healthy = false; |
| | | $this->saveErrorStats(); |
| | | } |
| | | |
| | | $this->logError('Failed to refresh OAuth token for '.$this->service_name, [ |
| | | 'error' => $response->get_error_message() |
| | | 'error' => $error_message |
| | | ]); |
| | | return false; |
| | | } |