Allegro WebAPI

Interfejs programistyczny platformy Allegro

doGetCatsDataLimit

Ostatnia zmiana: 07.03.2013 r.
Dostępność:
Metoda pozwala na pobranie w porcjach pełnego drzewa kategorii dostępnych we wskazanym kraju. Domyślnie zwracanych jest 50 pierwszych kategorii. Rozmiar porcji pozwala regulować parametr package-element, a sterowanie pobieraniem kolejnych porcji danych umożliwia parametr offset.

  1. country-id | int | wymagany
    Identyfikator kraju (listę identyfikatorów krajów uzyskać można za pomocą metody doGetCountries).
  2. local-version | long | niewymagany
    Parametr zdezaktualizowany (należy przekazać dowolną wartość, odpowiednią dla typu parametru).
  3. webapi-key | string | wymagany
    Klucz WebAPI użytkownika.
  4. offset | int | niewymagany
    Parametr pozwalający na sterowanie pobieraniem kolejnych porcji danych (numery porcji indeksowane są od 0).
  5. package-element | int | niewymagany
    Parametr pozwalający na określenie rozmiaru porcji zwracanych danych (zakres 1-5000; domyślnie 5000).
  6. onlyLeaf | boolean | niewymagany
    Jeśli ustawisz jego wartość na true / 1 (boolean), w odpowiedzi otrzymasz tylko kategorie najniższego rzędu.



Orientacyjna struktura wywołania metody

$dogetcatsdatalimit_request = array(
   'country-id' => 1,
   'local-version' => 0,
   'webapi-key' => 'g2fe408289',
   'offset' => 1,
   'package-element' => 2
);

  1. cats-list | CatInfoType[]
    Tablica struktur zawierających informacje o każdej kategorii.
    1. cat-id | int
      Identyfikator kategorii.
    2. cat-name | string
      Nazwa kategorii.
    3. cat-parent | int
      Identyfikator kategorii nadrzędnej (lub 0 dla kategorii głównych).
    4. cat-position | int
      Pozycja kategorii wobec innych kategorii tego samego rzędu (indeksowana od 0).
    5. cat-is-product-catalogue-enabled | int
      Pole zdezaktualizowane (zawsze będzie zwracać 0).
    6. isLeaf | boolean
      Dla kategorii najniższego rzędu, otrzymasz true / 1 (boolean).
  2. ver-key | long
    Wartość klucza wersji odpowiednia dla wybranego kraju i przekazanego klucza WebAPI.
  3. ver-str | string
    Wersja komponentu struktury drzewa kategorii odpowiednia dla przekazanego klucza WebAPI.



Orientacyjna struktura odpowiedzi serwera

$dogetcatsdatalimit_response = array(
   'cats-list' => array(
      array(
         'cat-id' => 19732,
         'cat-name' => 'Biżuteria i Zegarki',
         'cat-parent' => 0,
         'cat-position' => 2,
         'cat-is-product-catalogue-enabled' => 0),
      array(
         'cat-id' => 73973,
         'cat-name' => 'Delikatesy',
         'cat-parent' => 0,
         'cat-position' => 3,
         'cat-is-product-catalogue-enabled' => 0)),
   'ver-key' => 16551276,
   'ver-str' => '1.2.63'
);
 

  • ERR_INPUT_COUNTRY_ERROR
    Niepoprawny identyfikator kraju (wskazany kraj nie jest obsługiwany lub w parametrze przekazano zerową/pustą wartość).
  • ERR_NO_DATABASE
    Problemy z bazą danych Allegro.
  • ERR_WEBAPI_EXPIRED
    Data ważności klucza WebAPI została przekroczona.
  • ERR_WEBAPI_KEY
    Niepoprawna wartość klucza WebAPI lub klucz został zablokowany.
  • ERR_WEBAPI_KEY_INACTIVE
    Klucz WebAPI został zdezaktywowany (nie zaakceptowano warunków Regulaminu WebAPI).
  • ERR_WEBAPI_NOT_AVAIL
    Problemy z usługą Allegro WebAPI.

Allegro nie bierze odpowiedzialności za skutki wykorzystania zamieszczonych przykładów kodu, nie daje także gwarancji ich poprawnego działania. Widoczny kod ma charakter wyłącznie poglądowy i może zawierać błędy.

#1 (24.04.2010 r.) / php (Autor: danielnowacki)
  1. /**
  2. * Klient SOAP Allegro WebAPI
  3. *
  4. * @see http://allegro.pl/webapi
  5. * @see http://webapi.allegro.pl/uploader.php?wsdl
  6. *
  7. * @package Allegro/Client
  8. * @author Daniel Nowacki
  9. * @version 1.0
  10. */
  11.  
  12. <?php
  13. abstract class Allegro_Client_Abstract extends SoapClient
  14. {
  15. ...
  16. /**
  17. * Pobiera kategorie Allegro
  18. *
  19. * Jeżeli wszystkie wartości parametrów wejściowych zostaną ustawione na 0
  20. * to pobierze wszystkie kategorie.
  21. *
  22. * @see http://allegro.pl/webapi/documentation.php/show/id,46
  23. *
  24. * @param int $offset od tego przesunięcia zacznij
  25. * @param int $minCountElements pobierz miniamalnie tyle elementow
  26. * @param int $portionSize wielkość jednorazowej paczki
  27. * @return array kategorie serwisu
  28. */
  29. public function &getCatsData($offset = 0, $minCountElements = 0, $portionSize = 0)
  30. {
  31. $cats = array();
  32.  
  33. // liczba wszystkich kategorii
  34. $categoriesCount = $this->getCatsDataCount();
  35.  
  36. // przypadek - będą pobrane wszystkie dane, do tego jest oddzielna metoda
  37. if ($offset == 0 && $portionSize == 0 && $count == 0)
  38. {
  39. $cats = $this->doGetCatsData($this->config['country'], $this->getApiVersion(), $this->config['webapikey']);
  40. }
  41. else
  42. {
  43. if ($portionSize==0) throw new Exception('Portion size must be greather than 0');
  44. $elementCounter = 0;
  45.  
  46. while($elementCounter < $minCountElements) // jak nie pobrano wystarczajacej ilosci danych
  47. {
  48. // pobierz porcję danych
  49. $tmp = array_merge($cats, $this->doGetCatsDataLimit($this->config['country'], $this->getApiVersion(), $this->config['webapikey'], $offset, $portionSize));
  50.  
  51. if (empty($cats)) // w pierwszej interacji przypisuje pobrane kategorie do zmiennej
  52. {
  53. $cats = $tmp;
  54. }
  55. else // w każdej kolejnej łączone jest pole z kategoriami
  56. {
  57. // łączę tylko po polu listy kategorii
  58. $cats['cats-list'] = array_merge($cats['cats-list'], $tmp['cats-list']);
  59. }
  60.  
  61. $elementCounter += $portionSize;
  62. $offset++;
  63.  
  64. // warunek stopu
  65. if ($elementCounter >= $categoriesCount) break;
  66. }
  67. }
  68.  
  69. // zwraca tylko same opisy pol
  70. return $cats['cats-list'];
  71. }
  72. ...
  73. }
#2 (18.07.2014 r.) / php (Autor: pp2005)
  1. /**
  2. *
  3. * @param int $portionSize Rozmiar porcji danych
  4. * @param int $offset Porcja danych (0...n)
  5. */
  6. public function getCatsData( $portionSize = 0, $offset = 0) {
  7. $cats = array ();
  8.  
  9. $categoriesCount = {liczbakateogrii}; // API: doGetCatsDataCount()
  10.  
  11. while ( count ( $cats ) < $categoriesCount ) {
  12.  
  13. $tmp = $this->doGetCatsDataLimit ( {countyId}, {webapiKey}, $offset, $portionSize );
  14.  
  15. if (empty ( $cats )) {
  16. $cats = $tmp ['catsList'] ['item'];
  17. } elseif (is_array ( $tmp ['catsList'] ) && is_array ( $tmp ['catsList'] ['item'] )) {
  18. $cats = array_merge ( $cats, $tmp ['catsList'] ['item'] );
  19. }
  20.  
  21. $offset ++;
  22. }
  23. return $cats;
  24. }
  25.  
  26. public function doGetCatsDataLimit($countryID, $webAPI, $offset, $packageElement){
  27. $getCats = $this->getSOAP()->call('doGetCatsDataLimit', array(
  28. 'countryId' => $countryID,
  29. 'webapiKey' => $webAPI,
  30. 'offset' => $offset,
  31. 'packageElement' => $packageElement
  32. ));
  33. return $getCats;
  34. }