Browse Source

rewrite socks route endpoint function to be only one wildcard endpoint

CauseFX 5 years ago
parent
commit
0ac43a95f1
1 changed files with 40 additions and 53 deletions
  1. 40 53
      api/v2/routes/socks.php

+ 40 - 53
api/v2/routes/socks.php

@@ -1,58 +1,45 @@
 <?php
-$app->any('/socks/sonarr/{route:.*}', function ($request, $response) {
+$app->any('/socks/{app}/{route:.*}', function ($request, $response, $args) {
 	$Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
-	$socks = $Organizr->socks(
-		'sonarrURL',
-		'sonarrSocksEnabled',
-		'sonarrSocksAuth',
-		$request,
-		'X-Api-Key'
-	);
-	$data = $socks ?? jsonE($GLOBALS['api']);
-	$response->getBody()->write($data);
-	return $response
-		->withHeader('Content-Type', 'application/json;charset=UTF-8')
-		->withStatus($GLOBALS['responseCode']);
-});
-$app->any('/socks/radarr/{route:.*}', function ($request, $response) {
-	$Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
-	$socks = $Organizr->socks(
-		'radarrURL',
-		'radarrSocksEnabled',
-		'radarrSocksAuth',
-		$request,
-		'X-Api-Key'
-	);
-	$data = $socks ?? jsonE($GLOBALS['api']);
-	$response->getBody()->write($data);
-	return $response
-		->withHeader('Content-Type', 'application/json;charset=UTF-8')
-		->withStatus($GLOBALS['responseCode']);
-});
-$app->any('/socks/lidarr/{route:.*}', function ($request, $response) {
-	$Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
-	$socks = $Organizr->socks(
-		'lidarrURL',
-		'lidarrSocksEnabled',
-		'lidarrSocksAuth',
-		$request,
-		'X-Api-Key'
-	);
-	$data = $socks ?? jsonE($GLOBALS['api']);
-	$response->getBody()->write($data);
-	return $response
-		->withHeader('Content-Type', 'application/json;charset=UTF-8')
-		->withStatus($GLOBALS['responseCode']);
-});
-$app->any('/socks/sabnzbd/{route:.*}', function ($request, $response) {
-	$Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
-	$socks = $Organizr->socks(
-		'sabnzbdURL',
-		'sabnzbdSocksEnabled',
-		'sabnzbdSocksAuth',
-		$request,
-		null
-	);
+	switch ($args['app']) {
+		case 'sonarr':
+			$url = 'sonarrURL';
+			$enabled = 'sonarrSocksEnabled';
+			$auth = 'sonarrSocksAuth';
+			$header = 'X-Api-Key';
+			break;
+		case 'radarr':
+			$url = 'radarrURL';
+			$enabled = 'radarrSocksEnabled';
+			$auth = 'radarrSocksAuth';
+			$header = 'X-Api-Key';
+			break;
+		case 'lidarr':
+			$url = 'lidarrURL';
+			$enabled = 'lidarrSocksEnabled';
+			$auth = 'lidarrSocksAuth';
+			$header = 'X-Api-Key';
+			break;
+		case 'sabnzbd':
+			$url = 'sabnzbdURL';
+			$enabled = 'sabnzbdSocksEnabled';
+			$auth = 'sabnzbdSocksAuth';
+			$header = null;
+			break;
+		case 'nzbget':
+			$url = 'nzbgetURL';
+			$enabled = 'nzbgetSocksEnabled';
+			$auth = 'nzbgetSocksAuth';
+			$header = null;
+			break;
+		default:
+			$Organizr->setAPIResponse('error', 'Application not supported for socks', 404);
+			$response->getBody()->write(jsonE($GLOBALS['api']));
+			return $response
+				->withHeader('Content-Type', 'application/json;charset=UTF-8')
+				->withStatus($GLOBALS['responseCode']);
+	}
+	$socks = $Organizr->socks($url, $enabled, $auth, $request, $header);
 	$data = $socks ?? jsonE($GLOBALS['api']);
 	$response->getBody()->write($data);
 	return $response