From d7306be80f23687001022a0797db0c1252367cdf Mon Sep 17 00:00:00 2001 From: Jacek Pyziak Date: Fri, 27 Feb 2026 18:56:16 +0100 Subject: [PATCH] feat: add ShopProClient::fetchCategories() method --- src/Modules/Settings/ShopProClient.php | 34 ++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/src/Modules/Settings/ShopProClient.php b/src/Modules/Settings/ShopProClient.php index aa8b566..e8b0e44 100644 --- a/src/Modules/Settings/ShopProClient.php +++ b/src/Modules/Settings/ShopProClient.php @@ -573,6 +573,40 @@ final class ShopProClient ]; } + /** + * @return array{ok:bool,http_code:int|null,message:string,categories:array>} + */ + public function fetchCategories( + string $baseUrl, + string $apiKey, + int $timeoutSeconds + ): array { + $normalizedBaseUrl = rtrim(trim($baseUrl), '/'); + $endpointUrl = $normalizedBaseUrl . '/api.php?endpoint=categories&action=list'; + + $response = $this->requestJson($endpointUrl, $apiKey, $timeoutSeconds); + if (($response['ok'] ?? false) !== true) { + return [ + 'ok' => false, + 'http_code' => $response['http_code'] ?? null, + 'message' => (string) ($response['message'] ?? 'Nie mozna pobrac kategorii z shopPRO.'), + 'categories' => [], + ]; + } + + $data = is_array($response['data'] ?? null) ? $response['data'] : []; + $categories = isset($data['categories']) && is_array($data['categories']) + ? $data['categories'] + : []; + + return [ + 'ok' => true, + 'http_code' => $response['http_code'] ?? null, + 'message' => '', + 'categories' => $categories, + ]; + } + /** * @param array|null $jsonBody * @return array{ok:bool,http_code:int|null,message:string,payload?:array,data?:mixed}