Esempio n. 1
0
        public void Init(ProviderConfig config)
        {
            if (initDone)
            {
                return;
            }

            this.Config = config;

            // configure aqbanking configuration path, default to $HOME/.aqbanking/
            string configPath = Path.Combine(System.Environment.GetEnvironmentVariable("HOME"), ".aqbanking");

            if (config.Settings ["ConfigPath"] != null)
            {
                configPath = config.Settings ["ConfigPath"].Value;
            }

            if (!Directory.Exists(configPath))
            {
                throw new Exception("configPath  " + configPath +
                                    "does not exist!");
            }

            abHandle = AB.AB_Banking_new("appstring", configPath, 0);

            // determine which gui to use
            string guiToUse = "";

            if (config.Settings ["Gui"] != null)
            {
                guiToUse = config.Settings ["Gui"].Value;
            }

            switch (guiToUse)
            {
            case "ManagedConsole":
                // our own simple console, implemented in managed code
                AqGuiHandler.SetGui(abHandle, new ConsoleGui());
                break;

            case "AutoGui":
                // a non-interactive gui which requires pre-saved pin in the config
                var nigui = new AutoGui();

                if (config.Settings ["Pin"] == null)
                {
                    throw new Exception("AutoGui requires a pre-saved pin");
                }

                nigui.Pin = config.Settings ["Pin"].Value;
                AqGuiHandler.SetGui(abHandle, nigui);
                break;

            case "CGui": goto default;

            default:
                // default GUI is AqBankings/Gwen internal CGui
                var gui = AB.GWEN_Gui_CGui_new();
                AB.GWEN_Gui_SetGui(gui);
                AB.AB_Gui_Extend(gui, abHandle);
                break;
            }

            // initialise aqbanking
            int errcode = AB.AB_Banking_Init(abHandle);

            if (errcode != 0)
            {
                throw new Exception("AB_Banking_Init nicht erfoglreich, fehlercode: " + errcode);
            }
            if (!abHandle.Equals(IntPtr.Zero))
            {
                AB.AB_Banking_OnlineInit(abHandle);
            }
            else
            {
                throw new Exception("Failed to initialize aqBanking");
            }
            initDone = true;

            return;
        }