Your IP : 216.73.216.250


Current Path : /home/digilove/public_html/plugins/system/forseo/vendor/weeblr/forseo/api/controller/
Upload File :
Current File : /home/digilove/public_html/plugins/system/forseo/vendor/weeblr/forseo/api/controller/services.php

<?php
/**
 * Project: 4SEO
 *
 * @package          4SEO
 * @copyright        Copyright Weeblr llc - 2020-2024
 * @author           Yannick Gaultier - Weeblr llc
 * @license          GNU General Public License version 3; see LICENSE.md
 * @version          6.2.0.2478
 * @date        2024-10-03
 */

namespace Weeblr\Forseo\Api\Controller;

use Weeblr\Forseo\Helper;

use Weeblr\Wblib\Forseo\Wb;
use Weeblr\Wblib\Forseo\System;
use Weeblr\Wblib\Forseo\Api;

// no direct access
defined('_JEXEC') || defined('WBLIB_EXEC') || die;

class Services extends Api\Controller
{
	/**
	 * Builds up an array of data for use in API response.
	 *
	 * @param array $options
	 *
	 * @return array| \Exception
	 */
	public function get($request, $options)
	{
		$service = Wb\arrayGet($options, 'service');
		$helper  = $this->factory->getA(Helper\Services::class);

		try
		{
			$valid = $helper->validateService($service);
			if ($valid instanceof \Throwable)
			{
				return $valid;
			}

			$integrationModelName = 'Weeblr\Forseo\Model\Integrations\\'
									. $helper->providerFromServiceName($service)
									. '\\'
									. $helper->modelNameFromServiceName($service);

			return $this->factory
				->getA($integrationModelName)
				->get($options);
		}
		catch (\Throwable $e)
		{
			$this->factory->getThe('forseo.logger')->error('Services API error: %s::%d %S %s', $e->getFile(), $e->getLine(), $e->getCode(), $e->getMessage());

			return $helper->processException($e);
		}
	}

	/**
	 * Create a piece of data through a service API.
	 *
	 * @param Weeblr\Wblib\APi\Request $request
	 * @param array                    $options
	 *
	 * @return \Exception
	 */
	public function post($request, $options)
	{
		$service = Wb\arrayGet($options, 'service');
		$helper  = $this->factory->getA(Helper\Services::class);

		try
		{
			$valid   = $helper->validateService($service);
			if ($valid instanceof \Throwable)
			{
				return $valid;
			}

			$integrationModelName = 'Weeblr\Forseo\Model\Integrations\\'
									. $helper->providerFromServiceName($service)
									. '\\'
									. $helper->modelNameFromServiceName($service);

			return $this->factory
				->getA(
					$integrationModelName
				)->post(
					$request->getBody(),
					$options
				);
		}
		catch (\Throwable $e)
		{
			$this->factory->getThe('forseo.logger')->error('%s::%d %s - %s', $e->getFile(), $e->getLine(), $e->getMessage(), $e->getTraceAsString());

			return $helper->processException($e);
		}
	}

	/**
	 * Create a piece of data through a service API.
	 *
	 * @param Weeblr\Wblib\APi\Request $request
	 * @param array                    $options
	 *
	 * @return \Exception
	 */
	public function put($request, $options)
	{
		$service = Wb\arrayGet($options, 'service');
		$helper  = $this->factory->getA(Helper\Services::class);

		try
		{
			$valid   = $helper->validateService($service);
			if ($valid instanceof \Throwable)
			{
				return $valid;
			}

			$integrationModelName = 'Weeblr\Forseo\Model\Integrations\\'
									. $helper->providerFromServiceName($service)
									. '\\'
									. $helper->modelNameFromServiceName($service);

			return $this->factory
				->getA(
					$integrationModelName
				)->put(
					$request->getBody(),
					$options
				);
		}
		catch (\Throwable $e)
		{
			$this->factory->getThe('forseo.logger')->error('%s::%d %s - %s', $e->getFile(), $e->getLine(), $e->getMessage(), $e->getTraceAsString());

			return $helper->processException($e);
		}
	}
}