Client PHP pour l'API Ajax interne de cex UK.
Ce client a été créé à partir de l'ingénierie inverse des réponses Ajax lors de la navigation sur le site Web, il suppose donc beaucoup de choses.
Sous licence MIT - voir LICENSE.md pour plus d'informations.
composer require liamja/ cex
vendor/bin/phpunit
Créez une nouvelle instance du client cex :
$ cex = new cex Client ();
Les produits individuels sont appelés boîtes .
// 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
}
Pour rechercher du stock à proximité d'un emplacement, vous devez d'abord rechercher le magasin.
L'API renverra un ensemble de magasins les plus proches d'une latitude et d'une longitude données.
Le géocodage n'entre pas dans le cadre de ce package, mais vous pouvez rechercher la latitude et la longitude approximatives d'un emplacement à l'aide d'un service de géocodage tel que 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 );
Pour trouver les magasins les plus proches d’une longitude et d’une latitude :
// 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 );
Si l'API renvoie une erreur, une FailureException sera levée :
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 );