server . '/api/slotdb/v1/' . ltrim($path, '/') . '?' . $queryStr; $request = new Request('GET', $fullPath, $headers); return $this->client->sendRequest($request); } private function post(string $path, array $data, array $query = [], array $headers = []): ResponseInterface { $queryStr = \http_build_query($query); $fullPath = $this->server . '/api/slotdb/v1/' . ltrim($path, '/') . '?' . $queryStr; $headers['content-type'] ??= 'application/json'; $request = new Request('POST', $fullPath, $headers, json_encode($data)); return $this->client->sendRequest($request); } public function querySlot(string $slotId): array { $res = $this->get("/slot/{$slotId}"); $data = json_decode($res->getBody(), true); return $data; } public function updateSlot(string $slotId, array $props): array { $res = $this->post("/slot/{$slotId}", data: $props); $data = json_decode($res->getBody(), true); return $data; } public function findSlots(array $where = [], array $what = [], int $limit = 250, int $page = 0): array { $query = [ 'limit' => $limit, 'page' => $page, 'get' => join(",",$what), ]; foreach ($where as $prop=>$cond) { $whereCond = "{$prop}:{$cond}"; $query['where[]'] = $whereCond; } $res = $this->get("/slots", $query); $data = json_decode($res->getBody(), true); return $data; } }