jar = new \GuzzleHttp\Cookie\CookieJar; // Uncomment if cookies need to be set } public function test() { $test = parent::appTest($this->url("api/speedtest/latest/")); echo $test->status; } public function livestats() { $status = "inactive"; $res = parent::execute($this->url("api/speedtest/latest/")); $details = json_decode($res->getBody()); $data = []; if ($details) { $data["ping"] = number_format($details->data->ping); $data["download"] = number_format($details->data->download, 1); $data["upload"] = number_format($details->data->upload, 1); foreach ($this->config->availablestats as $stat) { if (!isset(self::getAvailableStats()[$stat])) { continue; } $newstat = new \stdClass(); $newstat->title = self::getAvailableStats()[$stat]; $newstat->value = self::formatUsingStat( $stat, $details->data->{$stat} ); $data["visiblestats"][] = $newstat; } } return parent::getLiveStats($status, $data); } public function url($endpoint) { $api_url = parent::normaliseurl($this->config->url) . $endpoint; return $api_url; } public static function getAvailableStats() { return [ "ping" => "Ping", "download" => "Down", "upload" => "Up", "created_at" => "Time", ]; } private static function formatUsingStat($stat, $number) { if (!isset($number)) { return "N/A"; } switch ($stat) { case "download": case "upload": return number_format($number) . "Mbit/s"; case "ping": return number_format($number) . "ms"; case "created_at": return (new \DateTime($number))->format("H:i"); default: return $number; } } }