PHP-клиент для внутреннего Ajax API cex UK.
Этот клиент был создан в результате обратного проектирования ответов Ajax при просмотре веб-сайта, поэтому он предполагает многое.
Лицензия MIT — дополнительную информацию см. на LICENSE.md.
composer require liamja/ cex
vendor/bin/phpunit
Создайте новый экземпляр клиента cex :
$ cex = new cex Client ();
Отдельные продукты называются коробками .
// Specify a new set of search parameters.
$ searchParameters = new SearchParameters ();
$ searchParameters -> setSearchTerm ( ' Super Mario Bros ' );
// Search for boxes that match our parameters.
$ boxes = $ cex -> searchBoxes ( $ searchParameters );
// cex Client::searchBoxes() returns an array of Liamja cex ModelsBox
foreach ( $ boxes as $ box ) {
// Get the box's unique ID.
echo $ box -> boxId ; // 045496901738
// Get the box's name.
echo $ box -> boxName ; // New Super Mario Bros. Wii
// Get the category the box belongs to.
echo $ box -> categoryName ; // Wii Software
// Get the cash price.
echo $ box -> cashPrice ; // 5.00
// Get the trade-in / exchange price.
echo $ box -> exchangePrice ; // 8.00
// Get the sale price.
echo $ box -> salePrice ; // 12.00
}
Чтобы найти товар рядом с определенным местом, вам сначала нужно найти магазин.
API вернет набор магазинов, ближайших к заданной широте и долготе.
Геокодирование не входит в сферу действия этого пакета, но вы можете найти приблизительную широту и долготу местоположения с помощью службы геокодирования, например http://geocode.xyz:
// Set up a new Guzzle client solely for geocoding.
$ geocodeClient = new GuzzleHttp Client ([
' base_uri ' => ' https://geocode.xyz/ ' ,
]);
$ response = $ geocodeClient -> get ( ' Manchester, UK ' . ' ?json=1 ' );
$ results = json_decode ( $ response -> getBody ()-> getContent ());
// Use the geocoding results to find stores closest to Manchester.
$ stores = $ cex -> nearestStores ( $ results -> latt , $ results -> longt );
Чтобы найти магазины, ближайшие к долготе и широте:
// First, you'll need the lat/long of the location you want to search.
$ latitude = 52.62343240000001 ;
$ longitude = 1.3077290999999605 ;
// Search for stores closest to a given location.
$ stores = $ cex -> nearestStores ( $ latitude , $ longitude );
// cex Client::nearestStores() returns an array of Liamja cex ModelsNearestStore
foreach ( $ stores as $ store ) {
// Get the store's unique ID.
echo $ store -> storeId ; // 168
// Get the store's name.
echo $ stores -> storeName ; // Norwich
// How far away the store is from the given location, in miles.
echo $ stores -> distance ; // 0.47
// Opening days and times.
echo $ box -> timings [ ' open ' ][ ' monday ' ]; // 9:00
echo $ box -> timings [ ' close ' ][ ' friday ' ]; // 18:00
}
$ stores = $ cex -> getStores ();
// cex Client::getStores() returns an array of Liamja cex ModelsStore
foreach ( $ stores as $ store ) {
// Get the store's unique ID.
echo $ store -> storeId ; // 168
// Get the store's name.
echo $ stores -> storeName ; // Norwich
// Get the store's region.
echo $ stores -> storeName ; // East Anglia
}
// Search for stores closest to a given location.
$ stores = $ cex -> nearestStores ( 52.62343240000001 , 1.3077290999999605 );
// Get the nearest store's ID.
$ storeId = $ stores [ 0 ]->storeId
// Search for stocked Battletoads at our nearest store.
$ searchParameters = new SearchParameters ();
$ searchParameters
-> setSearchTerm ( ' Battletoads ' )
-> setStoreId ( $ storeId )
-> isInStock ();
$ boxes = $ cex -> searchBoxes ( $ searchParameters );
Если API возвращает ошибку, будет выброшено исключение FailException:
try {
$ boxes = $ cex -> searchBoxes ( $ searchParameters );
} catch ( Liamja cex FailureException $ e ) {
echo $ e -> getMessage (); // "Missing search text"
echo $ e -> getCode (); //
echo $ e -> getMoreInfo (); // []
}
$ cex = new cex Client ();
// Search for 'Battleloads' titles that are in stock.
$ searchParameters = new SearchParameters ();
$ searchParameters
-> setSearchTerm ( ' Battletoads ' )
-> isInStock ();
$ boxes = $ cex -> searchBoxes ( $ searchParameters );
var_dump ( $ boxes );
// Search using their predictive search (seems better at sorting by relevancy.)
$ searchParameters = new SearchParameters ();
$ searchParameters -> setSearchTerm ( ' Super Mario Bros ' );
$ results = $ cex -> predictiveSearch ( $ searchParameters );
var_dump ( $ results );
// Search for stores closest to a given location.
$ stores = $ cex -> nearestStores ( 52.62343240000001 , 1.3077290999999605 );
var_dump ( $ stores );
// Show all stores in the country.
$ stores = $ cex -> getStores ();
var_dump ( $ stores );