fetcher = new fetcher( $CFG->labnbook_api_url, $this->getSigningKey(), $this->getEnvironment() ); } public function getRedirectUrl(): string { global $CFG; return \rtrim($CFG->labnbook_api_url, '/') . '/v1/redirect'; } public function getLastError() { return $this->fetcher->getLastError(); } protected function getEnvironment(): environment { global $CFG, $USER; $env = new environment(); $env->orig = "inst"; // default value $env->iss = (int) $CFG->labnbook_institution_id; $env->sub = (int) $USER->id; return $env; } protected function fetch($verb, $path, $payload = []) { global $SESSION; $response = $this->fetcher->fetch($verb, $path, $payload); if (!empty($response->auth)) { if (empty($SESSION->labnbook)) { $SESSION->labnbook = new \Stdclass(); } $SESSION->labnbook->auth = $response->auth; } return isset($response->data) ? $response->data : $response; } abstract protected function getSigningKey(): string; }