antonythorpe/consumer

A SilverStripe BulkLoader for consuming external APIs

Installs: 339

Dependents: 1

Suggesters: 0

Security: 0

Stars: 4

Watchers: 3

Forks: 1

Open Issues: 0

Type:silverstripe-vendormodule

3.0.0 2023-05-24 08:53 UTC

This package is auto-updated.

Last update: 2024-03-01 00:09:04 UTC


README

A SilverStripe BulkLoader for consuming external APIs

CI Latest Stable Version Total Downloads Latest Unstable Version License

Maintain data integrity with an external source of truth. Keep dataobjects up to date with fresh data received from external APIs. Inspired by burnbright/silverstripe-importexport.

Features

  • Retains a record of the maximum last edited date (to use as a limit in future API calls)
  • Display, Log and/or email Bulk Loader Results showing the changes made to a dataobject
  • Localisation options available for Results report
  • Preview setting for dry runs leaving the dataobject untouched

Use Case

Where there is an external source of truth that a dataobject needs to be updated from.

An example is an eCommerce website where the product prices need to be kept in alignment with an online inventory system (which is used post-sale to manage fulfilment of an order). With the eCommerce website being a subset of the total inventory items in stock, updating, without creating new product items, is required. The pricing and other properties change frequently. Based upon the philosophy of entering data only once a sync from the external source of truth would keep the website accurate, up to date and reduce maintenance.

How to use

  • Subclass \AntonyThorpe\Consumer\BulkLoader and set your column map between the external API fields and the dataobject (see docs and tests folder for guidance).
  • Create a BuildTask to retrieve fresh API data using a tool like Guzzle
  • Alter the dataobject via a method on your BulkLoader subclass
  • Review the Bulk Loader Results report
  • Create an instance of the Consumer class and record the last edited date for future reference
  • Setup a cron job to run the BuildTask on a regular basis and monitor incoming emails for exceptions

Example

A bulk loader for Silvershop Unleashed Software (link)

Requirements

Documentation

Index

Support

None sorry.

Change Log

Link

Contributing

Link

License

MIT