Anonymizer.php
1 month ago
ConsentManager.php
1 month ago
ConsentNoticeService.php
1 month ago
HttpClient.php
1 month ago
NoticeManager.php
1 month ago
UsageTracker.php
1 month ago
HttpClient.php
53 lines
| 1 | <?php |
| 2 | |
| 3 | declare(strict_types=1); |
| 4 | |
| 5 | namespace AmeliaVendor\Melograno\UsageTracker\Core; |
| 6 | |
| 7 | class HttpClient |
| 8 | { |
| 9 | /** |
| 10 | * @param array<string, mixed> $data |
| 11 | */ |
| 12 | public function post(string $url, array $data): bool |
| 13 | { |
| 14 | if (!function_exists('wp_remote_post')) { |
| 15 | return false; |
| 16 | } |
| 17 | |
| 18 | $body = function_exists('wp_json_encode') ? wp_json_encode($data) : json_encode($data); |
| 19 | |
| 20 | $response = wp_remote_post($url, [ |
| 21 | 'timeout' => 15, |
| 22 | 'headers' => [ |
| 23 | 'Content-Type' => 'application/json', |
| 24 | ], |
| 25 | 'body' => $body, |
| 26 | ]); |
| 27 | |
| 28 | if (is_wp_error($response)) { |
| 29 | if (defined('WP_DEBUG') && WP_DEBUG) { |
| 30 | error_log('[melograno/usage-tracker] HTTP error: ' . $response->get_error_message()); |
| 31 | } |
| 32 | |
| 33 | return false; |
| 34 | } |
| 35 | |
| 36 | $code = (int) wp_remote_retrieve_response_code($response); |
| 37 | |
| 38 | if ($code < 200 || $code >= 300) { |
| 39 | if (defined('WP_DEBUG') && WP_DEBUG) { |
| 40 | $responseBody = wp_remote_retrieve_body($response); |
| 41 | error_log( |
| 42 | '[melograno/usage-tracker] HTTP status: ' . $code |
| 43 | . ($responseBody !== '' ? ' body: ' . $responseBody : '') |
| 44 | ); |
| 45 | } |
| 46 | |
| 47 | return false; |
| 48 | } |
| 49 | |
| 50 | return true; |
| 51 | } |
| 52 | } |
| 53 |