acf
This commit is contained in:
140
plugins/system/nrframework/helpers/urls/shortener.php
Normal file
140
plugins/system/nrframework/helpers/urls/shortener.php
Normal file
@ -0,0 +1,140 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @author Tassos Marinos <info@tassos.gr>
|
||||
* @link https://www.tassos.gr
|
||||
* @copyright Copyright © 2024 Tassos All Rights Reserved
|
||||
* @license GNU GPLv3 <http://www.gnu.org/licenses/gpl.html> or later
|
||||
*/
|
||||
|
||||
defined('_JEXEC') or die;
|
||||
|
||||
use Joomla\CMS\Language\Text;
|
||||
use Joomla\CMS\Http\HttpFactory;
|
||||
|
||||
/**
|
||||
* Framework URL Shortening Class
|
||||
* Should be extended. The get() method is required.
|
||||
*/
|
||||
class NRURLShortener {
|
||||
|
||||
/**
|
||||
* The Shortener Service
|
||||
*
|
||||
* @var object
|
||||
*/
|
||||
protected $service;
|
||||
|
||||
/**
|
||||
* The URL to be shortened
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $url;
|
||||
|
||||
/**
|
||||
* Sets if the service needs a valid login name
|
||||
*
|
||||
* @var boolean
|
||||
*/
|
||||
protected $needsLogin = true;
|
||||
|
||||
/**
|
||||
* Sets if the service needs a valid API Key
|
||||
*
|
||||
* @var boolean
|
||||
*/
|
||||
protected $needsKey = true;
|
||||
|
||||
/**
|
||||
* Constructor of class
|
||||
*
|
||||
* @param object $service The Shortener service information
|
||||
* @param string $url The URL to be shortened
|
||||
*/
|
||||
public function __construct($service, $url) {
|
||||
$this->service = $service;
|
||||
$this->url = $url;
|
||||
}
|
||||
|
||||
/**
|
||||
* Throws an exception
|
||||
*
|
||||
* @param string $msg
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
protected function throwError($msg)
|
||||
{
|
||||
throw new Exception(Text::sprintf('NR_URL_SHORTENING_FAILED', $this->url, $this->service->name, $msg));
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if credentials are set
|
||||
*
|
||||
* @return boolean Returns true if credentials are set
|
||||
*/
|
||||
protected function validateCredentials()
|
||||
{
|
||||
|
||||
if ($this->needsKey && !isset($this->service->api))
|
||||
{
|
||||
$this->throwError("API Key not set");
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
if ($this->needsLogin && !isset($this->service->login))
|
||||
{
|
||||
$this->throwError("Login not set");
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Shortens the URL
|
||||
*
|
||||
* @return string On success returns the shortened URL
|
||||
*/
|
||||
public function get()
|
||||
{
|
||||
|
||||
if (!$this->validateCredentials())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
$baseURL = $this->baseURL();
|
||||
|
||||
if (!$baseURL)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
$response = HttpFactory::getHttp()->get($baseURL, null, 5);
|
||||
|
||||
if ($response === null || $response->code !== 200)
|
||||
{
|
||||
$this->throwError($response->body);
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
catch (RuntimeException $e)
|
||||
{
|
||||
$this->throwError($e->getMessage());
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
return trim($response->body);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
Reference in New Issue
Block a user