Hi, I think for the next release of Finance::Quote, Alphavantage.pm and IEXCloud will only support environment variables (named ALPHVANTAGE_API_KEY and IEXCLOUD_API_KEY).
We are going to work on extending the new operator to allow setting instance variables, including module specific data. Something like: my $q = Finance::Quote->new( TIMEOUT => 60, FAILOVER => 1, alphavantage => { API_KEY => 'thealphavkey', othervariable => 'value' }, iexcloud => { API_KEY => 'theiexkey'}, ); There will also be setter methods as you suggested. We can keep you informed so that the September GnuCash release can take advantage. Best, Vince > On Jun 15, 2019, at 10:59 PM, John Ralls <jra...@ceridwen.us> wrote: > > David, > > AQBanking maintains its own set of settings files in ~/.aqbanking. > Finance::Quote at present doesn't keep any user state. > > Regards, > John Ralls > > >> On Jun 15, 2019, at 5:52 PM, David Carlson <david.carlson....@gmail.com> >> wrote: >> >> I believe the AQ Banking feature has already solved the issue of saving >> usernames and passwords for multiple financial institutions in a manner that >> is easily migrated to new GnuCash releases. Is it possible to do the API >> Key thing in a manner that would seem very little different to the user? >> >> >> >> On Sat, Jun 15, 2019 at 12:53 PM John Ralls <jra...@ceridwen.us> wrote: >> >> >>> On Jun 15, 2019, at 9:17 AM, Vincent Lucarelli >>> <vincent.lucare...@gmail.com> wrote: >>> >>> Hi, >>> >>> We are working on the next release of Finance::Quote and will try to add >>> https://iexcloud.io/ <https://iexcloud.io/> as a new module. >>> >>> Like Alphavantage, users will need to register and get an API key. >>> >>> Since GnuCash is a major user of Finance::Quote, I wanted to get opinions >>> on how to handle API keys. I have two initial ideas: >>> >>> >>> 1. Each Finance::Quote module expects a module specific environment >>> variable and GnuCash would need to update the Preferences > Online Quotes >>> pane for each API key. >>> >>> 2. We invent a more global environment variable that can hold multiple API >>> keys. For example, something like >>> >>> FQ_API_KEYS=ALPHAVANTAGE_API_KEY:XXXXXXXXXXXXXXXX;IEXCLOUD_API_KEY:sk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx >>> >>> >>> The problem with the first approach is that GnuCash preferences need to >>> change with each addition. >>> >>> The problems wit the second approach are usability and parsing (do we >>> assume no service would ever include : or ; in the API key?). The later >>> could be solved with json formatting, but that is even worse for users. >>> >>> >>> >>> Appreciate any suggestions. >> >> Vince, >> >> Excellent news, thanks for stepping up to help Erik out. >> >> ';' in your FQ_API_KEYS will have to be quoted to keep the shell from >> interpreting it, and any quotes in the key would have to be escaped even >> with separate environment variables per service. Telling users to escape the >> delimiter character and quotes is easier than teaching them to format a JSON >> string. e.g FQ_API_KEYS="AlphaVantage:xxxxxxxxx\"xxxx\:xxxxxx...". The real >> problem with that is that it breaks backward compatibility with GnuCash, >> which sets ALPHAVANTAGE_API_KEY when the preference is set. That could be >> worked around by continuing to look for the older environment variable, or >> telling users to set the new environment variable themselves, which they'd >> need to do anyway to use a new service until we rewrote the preference item. >> Note that we're two weeks away from our next release, so that change would >> be in the September release at the earliest. >> >> Environment variables are clumsy. Might you consider an alternative, perhaps >> a "set_key(service, key)" function on the Finance::Quote object? >> >> Regards, >> John Ralls >> >> >> _______________________________________________ >> gnucash-devel mailing list >> gnucash-devel@gnucash.org >> https://lists.gnucash.org/mailman/listinfo/gnucash-devel >> >> >> -- >> David Carlson > _______________________________________________ gnucash-devel mailing list gnucash-devel@gnucash.org https://lists.gnucash.org/mailman/listinfo/gnucash-devel