diff --git a/Gotify/Gotify.php b/Gotify/Gotify.php index 1eb25382eb..a3e6049109 100644 --- a/Gotify/Gotify.php +++ b/Gotify/Gotify.php @@ -6,20 +6,14 @@ class Gotify extends \App\SupportedApps implements \App\EnhancedApps { public $config; - //protected $login_first = true; // Uncomment if api requests need to be authed first - //protected $method = 'POST'; // Uncomment if requests to the API should be set by POST - public function __construct() { - //$this->jar = new \GuzzleHttp\Cookie\CookieJar; // Uncomment if cookies need to be set } public function test() { - $attrs = [ - "headers" => ["Accept" => "application/json"], - ]; - $test = parent::appTest($this->url("application"), $attrs); + $attrs = $this->getAttrs(); + $test = parent::appTest($this->url("health"), $attrs); echo $test->status; } @@ -27,31 +21,62 @@ public function livestats() { $status = "inactive"; $data = []; - $attrs = [ - "headers" => ["Accept" => "application/json"], - ]; - - $messages = json_decode( - parent::execute($this->url("message"), $attrs)->getBody() - ); - - $data = []; - - if ($messages) { - $data["messages"] = count($messages->messages ?? []); + $attrs = $this->getAttrs(); + + // Fetch applications + $applicationsResponse = parent::execute($this->url("application"), $attrs); + $applications = json_decode($applicationsResponse->getBody()); + + // Count applications + if ($applications) { + $data["applications"] = count($applications); + } else { + $data["applications"] = 0; } - + + // Fetch clients + $clientsResponse = parent::execute($this->url("client"), $attrs); + $clients = json_decode($clientsResponse->getBody()); + + // Count clients + if ($clients) { + $data["clients"] = count($clients); + } else { + $data["clients"] = 0; + } + + // Fetch messages + $messagesResponse = parent::execute($this->url("message"), $attrs); + $messages = json_decode($messagesResponse->getBody()); + + // Count messages + if ($messages && isset($messages->messages)) { + $data["messages"] = count($messages->messages); + } else { + $data["messages"] = 0; + } + + // Determine status based on data + if ($data["applications"] > 0 || $data["clients"] > 0 || $data["messages"] > 0) { + $status = "active"; + } + return parent::getLiveStats($status, $data); } public function url($endpoint) { - $api_url = - parent::normaliseurl($this->config->url) . - "application/" . - $endpoint . - "?token=" . - $this->config->apikey; + $api_url = parent::normaliseurl($this->config->url) . $endpoint; return $api_url; } + private function getAttrs() + { + return [ + "headers" => [ + "Accept" => "application/json", + "X-Gotify-Key" => $this->config->apikey + ], + ]; + } + } diff --git a/Gotify/app.json b/Gotify/app.json index 3915b6f3fb..04c632383f 100644 --- a/Gotify/app.json +++ b/Gotify/app.json @@ -4,7 +4,7 @@ "website": "https://gotify.net", "license": "MIT License", "description": "A self-hosted push notification service.", - "enhanced": false, + "enhanced": true, "tile_background": "dark", "icon": "gotify.png" } diff --git a/Gotify/config.blade.php b/Gotify/config.blade.php index 77f425069c..4a8082c945 100644 --- a/Gotify/config.blade.php +++ b/Gotify/config.blade.php @@ -8,10 +8,6 @@ {!! Form::text('config[apikey]', isset($item) ? $item->getconfig()->apikey : null, ['placeholder' => __('app.apps.apikey'), 'data-config' => 'apikey', 'class' => 'form-control config-item']) !!} -
- - {!! Form::text('config[token]', isset($item) ? $item->getconfig()->token : null, ['placeholder' => __('app.apps.gotify_token'), 'data-config' => 'token', 'class' => 'form-control config-item']) !!} -
diff --git a/Gotify/livestats.blade.php b/Gotify/livestats.blade.php index bbf87d3b92..77df438e86 100644 --- a/Gotify/livestats.blade.php +++ b/Gotify/livestats.blade.php @@ -1,4 +1,12 @@