You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

106 lines
3.0 KiB

<?php namespace App\SupportedApps;
use GuzzleHttp\Exception\GuzzleException;
use GuzzleHttp\Client;
class Sonarr implements Contracts\Applications, Contracts\Livestats {
public function defaultColour()
{
return '#163740';
}
public function icon()
{
return 'supportedapps/sonarr.png';
}
public function configDetails()
{
return 'sonarr';
}
public function testConfig()
{
$res = $this->getStatus();
$status = json_decode($res->getBody());
if (isset($status->version))
{
echo 'Successfully connected to Sonarr API version '.$status->version;
}
else if (isset($status->error))
{
if ($status->error == "Unauthorized")
{
echo 'Incorrect API Key. You can find it in Settings > General';
}
else
{
echo 'Error: '.$status->error;
}
}
else
{
echo 'Something went wrong';
}
}
public function executeConfig()
{
$html = '';
$active = 'active';
$html = '
<ul class="livestats">
<li><span class="title"><i class="fas fa-exclamation-triangle"></i> Missing: '.$this->getMissing().'</span></li>
</ul>
<ul class="livestats">
<li><span class="title"><i class="fas fa-clock"></i> Activity: '.$this->getQueue().'</span></li>
</ul>
';
return json_encode(['status' => $active, 'html' => $html]);
}
public function getStatus()
{
$config = $this->config;
$url = $config->url;
$url = rtrim($url, '/');
$api_url = $url.'/api/system/status?apikey='.$config->apiKey;
$client = new Client(['http_errors' => false, 'timeout' => 15, 'connect_timeout' => 15]);
$res = $client->request('GET', $api_url);
return $res;
}
public function getMissing()
{
$config = $this->config;
$url = $config->url;
$url = rtrim($url, '/');
$api_url = $url.'/api/wanted/missing?apikey='.$config->apiKey.'&pageSize=1';
$client = new Client(['http_errors' => false, 'timeout' => 15, 'connect_timeout' => 15]);
$res = $client->request('GET', $api_url);
$json = json_decode($res->getBody());
$missing = $json->totalRecords;
if (empty($missing))
{
$missing = 0;
}
return $missing;
}
public function getQueue()
{
$config = $this->config;
$url = $config->url;
$url = rtrim($url, '/');
$api_url = $url.'/api/queue?apikey='.$config->apiKey.'&pageSize=1';
$client = new Client(['http_errors' => false, 'timeout' => 15, 'connect_timeout' => 15]);
$res = $client->request('GET', $api_url);
$queue = 0;
if (empty($res->getBody()))
{
$queue = sizeof($res->getBody());
}
return $queue;
}
}