Sh3ll
OdayForums


Server : LiteSpeed
System : Linux premium84.web-hosting.com 4.18.0-553.44.1.lve.el8.x86_64 #1 SMP Thu Mar 13 14:29:12 UTC 2025 x86_64
User : claqxcrl ( 523)
PHP Version : 8.1.32
Disable Function : NONE
Directory :  /home/claqxcrl/anfangola.com/wp-content/plugins/matomo/app/plugins/Marketplace/Api/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/claqxcrl/anfangola.com/wp-content/plugins/matomo/app/plugins/Marketplace/Api/Service.php
<?php

/**
 * Matomo - free/libre analytics platform
 *
 * @link https://matomo.org
 * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
 *
 */
namespace Piwik\Plugins\Marketplace\Api;

use Piwik\Http;
/**
 *
 */
class Service
{
    const CACHE_TIMEOUT_IN_SECONDS = 1200;
    const HTTP_REQUEST_TIMEOUT = 60;
    /**
     * @var string
     */
    private $domain;
    /**
     * @var null|string
     */
    private $accessToken;
    /**
     * API version to use on the Marketplace
     * @var string
     */
    private $version = '2.0';
    public function __construct($domain)
    {
        $this->domain = $domain;
    }
    public function authenticate($accessToken)
    {
        if (empty($accessToken)) {
            $this->accessToken = null;
        } elseif (ctype_alnum($accessToken)) {
            $this->accessToken = $accessToken;
        }
    }
    /**
     * The API version that will be used on the Marketplace.
     * @return string eg 2.0
     */
    public function getVersion()
    {
        return $this->version;
    }
    /**
     * Returns the currently set access token
     * @return null|string
     */
    public function getAccessToken()
    {
        return $this->accessToken;
    }
    public function hasAccessToken()
    {
        return !empty($this->accessToken);
    }
    /**
     * Downloads data from the given URL via a POST request. If a destination path is given, the downloaded data
     * will be stored in the given path and returned otherwise.
     *
     * Make sure to call {@link authenticate()} to download paid plugins.
     *
     * @param string $url An absolute URL to the marketplace including domain.
     * @param null|string $destinationPath
     * @param null|int $timeout  Defaults to 60 seconds see {@link self::HTTP_REQUEST_METHOD}
     * @return bool|string  Returns the downloaded data or true if a destination path was given.
     * @throws \Exception
     */
    public function download($url, $destinationPath = null, $timeout = null)
    {
        $method = Http::getTransportMethod();
        if (!isset($timeout)) {
            $timeout = static::HTTP_REQUEST_TIMEOUT;
        }
        $post = null;
        if ($this->accessToken) {
            $post = array('access_token' => $this->accessToken);
        }
        $file = Http::ensureDestinationDirectoryExists($destinationPath);
        $response = Http::sendHttpRequestBy($method, $url, $timeout, $userAgent = null, $destinationPath, $file, $followDepth = 0, $acceptLanguage = false, $acceptInvalidSslCertificate = false, $byteRange = false, $getExtendedInfo = false, $httpMethod = 'POST', $httpUsername = null, $httpPassword = null, $post);
        return $response;
    }
    /**
     * Executes the given API action on the Marketplace using the given params and returns the result.
     *
     * Make sure to call {@link authenticate()} to download paid plugins.
     *
     * @param string $action  eg 'plugins', 'plugins/$pluginName/info', ...
     * @param array $params   eg array('sort' => 'alpha')
     * @return mixed
     * @throws Service\Exception
     */
    public function fetch($action, $params)
    {
        $endpoint = sprintf('%s/api/%s/', $this->domain, $this->version);
        $query = Http::buildQuery($params);
        $url = sprintf('%s%s?%s', $endpoint, $action, $query);
        $response = $this->download($url);
        $result = json_decode($response ?? '', true);
        if (is_null($result)) {
            $message = sprintf('There was an error reading the response from the Marketplace: Please try again later.');
            throw new \Piwik\Plugins\Marketplace\Api\Service\Exception($message, \Piwik\Plugins\Marketplace\Api\Service\Exception::HTTP_ERROR);
        }
        if (!empty($result['error'])) {
            throw new \Piwik\Plugins\Marketplace\Api\Service\Exception($result['error'], \Piwik\Plugins\Marketplace\Api\Service\Exception::API_ERROR);
        }
        return $result;
    }
    /**
     * Get the domain that is used in order to access the Marketplace. Eg http://plugins.piwik.org
     * @return string
     */
    public function getDomain()
    {
        return $this->domain;
    }
}

ZeroDay Forums Mini