diff options
Diffstat (limited to 'interchange.cxx')
-rw-r--r-- | interchange.cxx | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/interchange.cxx b/interchange.cxx new file mode 100644 index 0000000..6886ba9 --- /dev/null +++ b/interchange.cxx @@ -0,0 +1,82 @@ +#include "interchange.hxx" +#include "interchange/ord.hxx" + +namespace Interchange { + + static Interchange* interchange; + + Interchange::Interchange(char const* sampleURL, char const* image_Dir, char const* certificate) + { + interchange = this; + interchange_init(sampleURL, image_Dir, certificate); + } + + Interchange::~Interchange() + { + interchange_cleanup(); + } + + void Interchange::catalog(QString const& prodGroup) + { + interchange_catalog(prodGroup.toLatin1().constData(), [](interchange_response* response) { + interchange->emitCatalog(QString{response->data}); + interchange_free_response(response); + }, nullptr); + } + + void Interchange::allProducts() + { + catalog("All-Products"); + } + + void Interchange::product(QString const& sku) + { + interchange_product(sku.toLatin1().constData(), [](interchange_response* response) { + interchange->emitProduct(QString{response->data}); + interchange_free_response(response); + }, nullptr); + } + + void Interchange::page(QString const& path) + { + interchange_page(path.toLatin1().constData(), [](interchange_response* response) { + interchange->emitPage(QString{response->data}); + interchange_free_response(response); + }); + } + + void Interchange::defaultCatalog(QString const& prodGroup) + { + interchange_catalog(prodGroup.toLatin1().constData(), nullptr, [](struct interchange_catalog* catalog) { + interchange_free_catalog(catalog); + }); + } + + void Interchange::defaultAllProducts() + { + defaultCatalog("All-Products"); + } + + void Interchange::emitCatalog(QString const& response) + { + emit gotCatalog(response); + } + + void Interchange::emitProduct(QString const& response) + { + emit gotProduct(response); + } + + void Interchange::emitPage(QString const& response) + { + emit gotPage(response); + } + + void Interchange::order(QString const& sku, Catalog const& catalog, Ord& order) + { + auto c_order = order.data(); + interchange_ord_order(sku.toLatin1().constData(), catalog.constData(), &c_order); + order.setData(c_order); + } + +} |