HEX
Server: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips PHP/7.4.30
System: Linux iZj6c1151k3ad370bosnmsZ 3.10.0-1160.76.1.el7.x86_64 #1 SMP Wed Aug 10 16:21:17 UTC 2022 x86_64
User: root (0)
PHP: 7.4.30
Disabled: NONE
Upload Files
File: /var/www/html/sparkle/wp-content/plugins/cloudflare/src/API/DefaultHttpClient.php
<?php

namespace CF\API;

use CF\API\Request;

class DefaultHttpClient implements HttpClientInterface
{
    const CONTENT_TYPE_KEY = 'Content-Type';
    const APPLICATION_JSON_KEY = 'application/json';

    protected $endpoint;

    /**
     * @param String $endpoint
     */
    public function __construct($endpoint)
    {
        $this->endpoint = $endpoint;
    }

    /**
     * @param  Request $request
     * @throws \Exception
     * @return Array $response
     */
    public function send(Request $request)
    {
        $requestOptions = $this->createRequestOptions($request);
        $url = $this->createRequestUrl($request);

        $response = wp_remote_request($url, $requestOptions);

        if (is_wp_error($response)) {
            throw new \Exception('Request error', $response->get_error_code);
        }

        $response_body = json_decode($response['body']);

        if (json_last_error() !== JSON_ERROR_NONE) {
            throw new \Exception('Error decoding client API JSON', json_last_error());
        }

        return $response_body;
    }

    /**
     * @param  Request $request
     * @return array $requestOptions
     */
    public function createRequestOptions(Request $request)
    {
        $requestOptions = array(
            'method' => $request->getMethod(),
            'headers' => $request->getHeaders(),
            'body' => $request->getBody(),
        );

        return $requestOptions;
    }

    /**
     * @param  Request $request
     * @return string $url
     */
    public function createRequestUrl(Request $request)
    {
        $url = $this->endpoint . $request->getUrl();
        foreach ($request->getParameters() as $key => $value) {
            $url = add_query_arg($key, $value, $url);
        }

        return $url;
    }
}