AqBanking3 Porting
From GnuCash
AqBanking3 (and gwenhywfar3) is the most recent library family for online banking by Martin Preuss. It is not source-compatible to aqbanking2. Hence, the current gnucash only compiles and runs with aqbanking2.
These are notes on which tasks need to be completed in order to achieve a full porting to aqbanking3:
Already done
- Some functions are merely renamed; in gnc-hbci-utils.h line 32 you just have to activate the #ifdef so that the #defines for the renames are being used.
- The AB_Banking_ActivateAllProviders() call is no longer necessary and can disappear.
- The functions using GWEN_XML_Parse are no longer necessary - that job is offered by GWEN_Gui_CGui_GetRawText().
- Instead of only calling AB_Banking_Init(), we additionally have to call AB_Banking_OnlineInit() if we intend to use the online banking features. The former is needed for when we only use the file import facilities.
- The largest sub-task is that aqbanking2 offered in the library a caching of the entered PIN (caching in memory during one session), whereas aqbanking3 doesn't offer this anymore. Hence, gnucash needs to implement such caching itself. In the gnucash-1.8.x series which used the OpenHBCI library (or was it aqbanking1?) gnucash already had such a caching, but it was deleted subsequently because aqbanking2 did this for us.
- Another sub-task is the processing of the data returned from the online jobs. Currently, these are retrieved from the AB_JOB after execution, but in aqbanking3, the AB_JOB won't offer any return data anymore. Instead, the returned data must be retrieved from an AB_IMEXPORTER_CONTEXT. Coincidentally this is already implemented in the file importer submodule of hbci (mt940 import, dtaus import) and only needs to be used from the online-banking parts of the hbci module.
Tasks
Large tasks
- The largest sub-task is that aqbanking2 offered in the library a caching of the entered PIN (caching in memory during one session), whereas aqbanking3 doesn't offer this anymore. Hence, gnucash needs to implement such caching itself. In the gnucash-1.8.x series which used the OpenHBCI library (or was it aqbanking1?) gnucash already had such a caching, but it was deleted subsequently because aqbanking2 did this for us.
- Another sub-task is the processing of the data returned from the online jobs. Currently, these are retrieved from the AB_JOB after execution, but in aqbanking3, the AB_JOB won't offer any return data anymore. Instead, the returned data must be retrieved from an AB_IMEXPORTER_CONTEXT. Coincidentally this is already implemented in the file importer submodule of hbci (mt940 import, dtaus import) and only needs to be used from the online-banking parts of the hbci module.
Small tasks
- Another sub-task is that the enqueing of online jobs is not anymore done in a queue which is managed by aqbanking, but instead gnucash has to pass one complete AB_JOB_LIST2 with all the jobs (well, usually only one) to aqbanking. Functionally, this isn't any different from what gnucash currently does, but it's a bunch of type and name changes.
- Another sub-task is that the GUI callback functions are no longer registered via calls to aqbanking functions, but instead via calls to GWEN_GUI_* functions. Functionally, this isn't any different from what gnucash currently does, but it's a bunch of type and name changes only.
- A small task is to hook up our gnucash logging functions into the gwenhywfar logging framework by using GWEN_Gui_LogHook, as Martin pointed out.