diff --git a/app/SupportedApps/Deluge.php b/app/SupportedApps/Deluge.php
index 5fb05dcc..5af9de5a 100644
--- a/app/SupportedApps/Deluge.php
+++ b/app/SupportedApps/Deluge.php
@@ -1,6 +1,7 @@
login()[0];
+ switch($res->getStatusCode()) {
+ case 200:
+ $data = json_decode($res->getBody());
+ if(!isset($data->result) || is_null($data->result) || $data->result == false) {
+ echo 'Failed: Invalid Credentials';
+ } else {
+ 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()
+ {
+ $html = '';
+ $active = 'active';
+ $jar = $this->login()[1];
+ $res = $this->getDetails($jar);
+ $data = json_decode($res->getBody());
+ $download_rate = $data->result->stats->download_rate;
+ $upload_rate = $data->result->stats->upload_rate;
+ $seed_count = $data->result->filters->state[2];
+ $leech_count = $data->result->filters->state[1];
+ $html = '
+
+ - '.$this->formatBytes($download_rate).'
+ - '.$this->formatBytes($upload_rate).'
+
+
+ - Leech: '.$leech_count[1].'
+ - Seed: '.$seed_count[1].'
+
+ ';
+ return json_encode(['status' => $active, 'html' => $html]);
+ }
+ public function getDetails($jar)
+ {
+ $config = $this->config;
+ $url = $config->url;
+ $url = rtrim($url, '/');
+ $api_url = $url.'/json';
+ $client = new Client(['http_errors' => false, 'timeout' => 15, 'connect_timeout' => 15]);
+ $res = $client->request('POST', $api_url, [
+ 'body' => '{"method": "web.update_ui", "params": [["none"], {}], "id": 1}',
+ 'cookies' => $jar,
+ 'headers' => ['content-type' => 'application/json', 'Accept' => 'application/json']
+ ]);
+ return $res;
+ }
+ public function login()
+ {
+ $config = $this->config;
+ $url = $config->url;
+ $password = $config->password;
+ $url = rtrim($url, '/');
+ $api_url = $url.'/json';
+ $jar = new \GuzzleHttp\Cookie\CookieJar();
+ $client = new Client(['http_errors' => false, 'timeout' => 15, 'connect_timeout' => 15]);
+ $res = $client->request('POST', $api_url, [
+ 'body' => '{"method": "auth.login", "params": ["'.$password.'"], "id": 1}',
+ 'cookies' => $jar,
+ 'headers' => ['content-type' => 'application/json', 'Accept' => 'application/json']
+ ]);
+ return array($res,$jar);
+ }
+
+ function formatBytes($bytes, $precision = 2) {
+ $units = array('B', 'KB', 'MB', 'GB', 'TB');
+
+ $bytes = max($bytes, 0);
+ $pow = floor(($bytes ? log($bytes) : 0) / log(1024));
+ $pow = min($pow, count($units) - 1);
+
+ // Uncomment one of the following alternatives
+ $bytes /= pow(1024, $pow);
+ // $bytes /= (1 << (10 * $pow));
+
+ return round($bytes, $precision) . ' ' . $units[$pow] . 'ps';
+ }
+}
diff --git a/resources/views/supportedapps/deluge.blade.php b/resources/views/supportedapps/deluge.blade.php
new file mode 100644
index 00000000..70f86a5d
--- /dev/null
+++ b/resources/views/supportedapps/deluge.blade.php
@@ -0,0 +1,11 @@
+{{ __('app.apps.config') }} ({{ __('app.optional') }})
+
+
+
+
+ {!! Form::text('config[password]', null, array('placeholder' => __('app.apps.password'), 'data-config' => 'password', 'class' => 'form-control config-item')) !!}
+
+
+
+
+