0.0.6 • Published 8 years ago

mywaitrose v0.0.6

Weekly downloads
1
License
MIT
Repository
github
Last release
8 years ago

MyWaitrose

Hacking around with watirose

Getting started

npm install mywaitrose

Typical use case would be to login:

await waitroseAPI.login(<USERNAME>, <PASSWORD>);

Then set the delivery postcode (this is required before you try and add anything to your basket)

await waitroseAPI.setPostcode(postcode);

You can now search for products:

const products = waitroseAPI.searchForProduct('Bananas');

Add products to your basket:

const newBasket = await waitroseAPI.addToBasket(products[0].id);
console.log(`You now have ${newBasket.numberOfItems} items in your basket`);
newBasket.products.forEach(product => console.log(product.id, product.name, product.quantity));

Get the estimated cost of your basket

const newTolleySummary = await waitroseAPI.getTrolleySummary();
console.log(`Estimated cost of trolley ${newTolleySummary.estimatedCost}`);

List the contents of your basket

const itemsInBasket = await waitroseAPI.getItemsInBasket();
console.log(`You have ${itemsInBasket.numberOfItems} items in your basket`);
itemsInBasket.products.forEach(product => console.log(product.name));

Get your favourite products

const favourites = await waitroseAPI.getFavourites();
console.log(`You have ${favourites.length} favourite products`);
favourites.forEach(favourite => console.log(favourite.details.name));

Complete example:

import WaitroseAPI from 'mywaitrose';

async function addToBasket(username, password, postcode, searchTerm) {
  const waitroseAPI = new WaitroseAPI();
  await waitroseAPI.login(username, password);
  console.log('Logged in');
  // need to set the postcode before we can add stuff to the basket ?
  await waitroseAPI.setPostcode(postcode);
  console.log('Set Password');
  // see what's in our basket
  const itemsInBasket = await waitroseAPI.getItemsInBasket();
  console.log(`You have ${itemsInBasket.numberOfItems} items in your basket`);
  itemsInBasket.products.forEach(product => console.log(product.id, product.name));
  // get the trolley cost
  const trolleySummary = await waitroseAPI.getTrolleySummary();
  console.log(`Estimated cost of trolley ${trolleySummary.estimatedCost}`);

  // seach for a product
  const products = await waitroseAPI.searchForProduct(searchTerm);
  console.log(`Found ${products.length} matches for "${searchTerm}"`);
  products.forEach(product => console.log(product.id, product.name));

  // add the first product we found
  const newBasket = await waitroseAPI.addToBasket(products[0].id);
  console.log(`You now have ${newBasket.numberOfItems} items in your basket`);
  newBasket.products.forEach(product => console.log(product.id, product.name, product.quantity));

  const newTolleySummary = await waitroseAPI.getTrolleySummary();
  console.log(`Estimated cost of trolley ${newTolleySummary.estimatedCost}`);
}

main(<YOUR USERNAME>, <YOUR PASSWORD>, <YOUR POSTCODE> <SEARCH TERM FOR PRODUCT TO ADD TO BASKET>);

Development

Setup

Clone the repo and run:

npm install

Running sample code in development

npm run dev USERNAME PASSWORD "POSTCODE" "PRODUCT SEARCH TERM"

This will run the code in a loop waiting for changes to the code. Pass your waitrose username, password, delivery postcode and the product you want to search for.

npm start USERNAME PASSWORD "POSTCODE" "PRODUCT SEARCH TERM"

This will run the code once - pass the same arguments as above.

Building

Build the javascript with:

npm run lint
npm test
npm run compile
0.0.6

8 years ago

0.0.5

8 years ago

0.0.4

8 years ago

0.0.3

8 years ago

0.0.2

8 years ago

0.0.1

8 years ago