first init
This commit is contained in:
@@ -0,0 +1,104 @@
|
||||
<?php
|
||||
|
||||
namespace App\Traits;
|
||||
|
||||
use Illuminate\Support\Facades\Http;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
|
||||
trait HttpClientTrait
|
||||
{
|
||||
/**
|
||||
* Get a configured HTTP client with global settings.
|
||||
*
|
||||
* @param array $additionalHeaders Additional headers to add
|
||||
* @param bool $withoutVerifying Whether to skip SSL verification
|
||||
* @return \Illuminate\Http\Client\PendingRequest
|
||||
*/
|
||||
protected function getHttpClient(array $additionalHeaders = [], bool $withoutVerifying = false)
|
||||
{
|
||||
$client = Http::withHeaders($additionalHeaders);
|
||||
|
||||
if ($withoutVerifying) {
|
||||
$client = $client->withoutVerifying();
|
||||
}
|
||||
|
||||
return $client;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a configured HTTP client with authentication.
|
||||
*
|
||||
* @param string $token Bearer token for authentication
|
||||
* @param array $additionalHeaders Additional headers to add
|
||||
* @param bool $withoutVerifying Whether to skip SSL verification
|
||||
* @return \Illuminate\Http\Client\PendingRequest
|
||||
*/
|
||||
protected function getAuthenticatedHttpClient(string $token, array $additionalHeaders = [], bool $withoutVerifying = false)
|
||||
{
|
||||
$headers = array_merge([
|
||||
'Authorization' => 'Bearer '.$token,
|
||||
'Accept' => 'application/json',
|
||||
'Content-Type' => 'application/json',
|
||||
], $additionalHeaders);
|
||||
|
||||
return $this->getHttpClient($headers, $withoutVerifying);
|
||||
}
|
||||
|
||||
/**
|
||||
* Log HTTP request details for debugging.
|
||||
*
|
||||
* @param string $method HTTP method
|
||||
* @param string $url Request URL
|
||||
* @param array $data Request data
|
||||
* @param array $headers Request headers
|
||||
*/
|
||||
protected function logHttpRequest(string $method, string $url, array $data = [], array $headers = [])
|
||||
{
|
||||
Log::debug('HTTP Request', [
|
||||
'method' => $method,
|
||||
'url' => $url,
|
||||
'data' => $data,
|
||||
'headers' => array_keys($headers), // Don't log sensitive header values
|
||||
'environment' => config('app.env'),
|
||||
'proxy_enabled' => $this->isProxyEnabled(),
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Log HTTP response details for debugging.
|
||||
*
|
||||
* @param \Illuminate\Http\Client\Response $response
|
||||
* @param string $context Additional context
|
||||
*/
|
||||
protected function logHttpResponse($response, string $context = '')
|
||||
{
|
||||
Log::debug('HTTP Response'.($context ? " - {$context}" : ''), [
|
||||
'status' => $response->status(),
|
||||
'successful' => $response->successful(),
|
||||
'body_length' => strlen($response->body()),
|
||||
'headers' => $response->headers(),
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if proxy is enabled for current environment.
|
||||
*/
|
||||
protected function isProxyEnabled(): bool
|
||||
{
|
||||
$config = config('http');
|
||||
$proxyConfig = $config['proxy'] ?? [];
|
||||
|
||||
return isset($proxyConfig['enabled']) && $proxyConfig['enabled'] &&
|
||||
in_array(config('app.env'), $proxyConfig['environments'] ?? []);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get current proxy configuration.
|
||||
*/
|
||||
protected function getProxyConfig(): array
|
||||
{
|
||||
$config = config('http');
|
||||
|
||||
return $config['proxy'] ?? [];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user