jar = new \GuzzleHttp\Cookie\CookieJar; // Uncomment if cookies need to be set } public function getHeaders() { $username = $this->config->username; $password = $this->config->password; $attrs['headers'] = [ 'Authorization' => 'Basic '.base64_encode($username.":".$password), 'OCS-APIRequest' => 'true', ]; return $attrs; } public function test() { $username = $this->config->username; $test = parent::appTest($this->url('/ocs/v1.php/cloud/users/'.$username.'?format=json'), $this->getHeaders()); echo $test->status; } public function livestats() { $status = 'inactive'; $username = $this->config->username; $res = parent::execute($this->url('/ocs/v1.php/cloud/users/'.$username.'?format=json'), $this->getHeaders()); $details = json_decode($res->getBody()); $data = ['visiblestats' => []]; if ($details) { foreach($this->config->availablestats as $stat) { if (!isset(self::getAvailableStats()[$stat])) continue; $newstat = new \stdClass(); $newstat->title = self::getAvailableStats()[$stat]; $newstat->value = self::formatNumberUsingStat($stat, $details->ocs->data->quota->{$stat}); $data['visiblestats'][] = $newstat; } } return parent::getLiveStats($status, $data); } public function url($endpoint) { $api_url = parent::normaliseurl($this->config->url); return $api_url.$endpoint; } public static function getAvailableStats() { return [ 'relative'=>'Usage', 'used'=>'Used Space', 'free'=>'Free Space', 'total'=>'Total Space', ]; } private static function formatNumberUsingStat($stat, $number) { if (!isset($number)) return 'N/A'; switch ($stat) { case 'free': case 'used': case 'total': return format_bytes($number, false, '', ''); case 'relative': return number_format($number, 1).'%'; default: return number_format($number); } } }