nginxsonarrradarrplexorganizrdashboardbookmarkapplication-dashboardmuximuxlandingpagestartpagelandinghtpcserverhomepagesabnzbdheimdallembycouchpotatonzbget
		
		
		
		
			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.
		
		
		
		
		
			
		
			
				
					
					
						
							95 lines
						
					
					
						
							2.6 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							95 lines
						
					
					
						
							2.6 KiB
						
					
					
				
								<?php namespace App\SupportedApps;
							 | 
						|
								
							 | 
						|
								use GuzzleHttp\Exception\GuzzleException;
							 | 
						|
								use GuzzleHttp\Client;
							 | 
						|
								
							 | 
						|
								class Runeaudio implements Contracts\Applications, Contracts\Livestats {
							 | 
						|
								    public function defaultColour()
							 | 
						|
								    {
							 | 
						|
								        return '#05A';
							 | 
						|
								    }
							 | 
						|
								    public function icon()
							 | 
						|
								    {
							 | 
						|
								        return 'supportedapps/runeaudio.png';
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    public function configDetails()
							 | 
						|
								    {
							 | 
						|
								        return 'runeaudio';
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    public function testConfig()
							 | 
						|
								    {
							 | 
						|
								        $res = $this->buildRequest('status');
							 | 
						|
								        switch($res->getStatusCode()) {
							 | 
						|
								            case 200:
							 | 
						|
								                echo 'Successfully connected to the API';
							 | 
						|
								                break;
							 | 
						|
								            case 401:
							 | 
						|
								                echo 'Failed: Invalid credentials';
							 | 
						|
								                break;
							 | 
						|
								            case 404:
							 | 
						|
								                echo 'Failed: Please make sure your URL is correct and that there is a trailing slash';
							 | 
						|
								                break;
							 | 
						|
								            default:
							 | 
						|
								                echo 'Something went wrong... Code: '.$res->getStatusCode();
							 | 
						|
								                break;
							 | 
						|
								        }
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    public function executeConfig()
							 | 
						|
								    {
							 | 
						|
								        $output = '';
							 | 
						|
								        $active = 'active';
							 | 
						|
								        $artist = '';
							 | 
						|
								        $song_title = '';
							 | 
						|
								        $res = $this->buildRequest('currentsong');
							 | 
						|
								        $array = explode("\n", $res->getBody());
							 | 
						|
								        foreach($array as $item) {
							 | 
						|
								            $item_array = explode(": ", $item);
							 | 
						|
								            if ($item_array[0] == 'Artist') {
							 | 
						|
								                $artist = $item_array[1];
							 | 
						|
								            } elseif ($item_array[0] == 'Title') {
							 | 
						|
								                $song_title = $item_array[1];
							 | 
						|
								            }
							 | 
						|
								        }
							 | 
						|
								
							 | 
						|
								        $output = '<ul class="livestats">';
							 | 
						|
								
							 | 
						|
								        if (strlen($artist) > 12) {
							 | 
						|
								            $output = $output.'<li><span class="title-marquee"><span>'.$artist.'</span></span></li>';
							 | 
						|
								        } else {
							 | 
						|
								            $output = $output.'<li><span class="title">'.$artist.'</span></li>';
							 | 
						|
								        }
							 | 
						|
								
							 | 
						|
								        $output = $output.'</ul><ul class="livestats">';
							 | 
						|
								
							 | 
						|
								        if (strlen($song_title) > 12) {
							 | 
						|
								            $output = $output.'<li><span class="title-marquee"><span>'.$song_title.'</span></span></li>';
							 | 
						|
								        } else {
							 | 
						|
								            $output = $output.'<li><span class="title">'.$song_title.'</span></li>';
							 | 
						|
								        }
							 | 
						|
								
							 | 
						|
								        $output = $output.'</ul>';
							 | 
						|
								
							 | 
						|
								        return json_encode(['status' => $active, 'html' => $output]);
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    public function buildRequest($endpoint)
							 | 
						|
								    {
							 | 
						|
								        $config = $this->config;
							 | 
						|
								        $url = $config->url;
							 | 
						|
								
							 | 
						|
								        $url = rtrim($url, '/');
							 | 
						|
								
							 | 
						|
								        $api_url = $url.'/command/?cmd='.$endpoint;
							 | 
						|
								        //die( $api_url.' --- ');
							 | 
						|
								
							 | 
						|
								        $client = new Client(['http_errors' => false, 'timeout' => 15, 'connect_timeout' => 15]);
							 | 
						|
								        $res = $client->request('GET', $api_url);
							 | 
						|
								        return $res;
							 | 
						|
								
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								}
							 | 
						|
								
							 |