CurrencyCloud / currencycloud-js

MIT License
20 stars 26 forks source link

Implement lazy login #84

Open mdesousa opened 1 year ago

mdesousa commented 1 year ago

A common pattern for serverless data sources is to initialize authentication configuration (login id, api key), and subsequently invoke api requests as needed:

  1. service initializes (login)
  2. users performs requests as needed
  3. service ends (logout)

Today the currency cloud sdk immediately sends an authentication request on step 1, which returns a token that can be used for a period of time (30 minutes). However, in many occasions there may be a significant period of time between step 1 and step 2... which means that we executed an unnecessary authentication request. For a number of reasons, it would be nice if the sdk could support a lazy login, like this:

  1. service initializes (lazy login just stores config without making authentication request)
  2. user performs initial request (sdk does not have a token, so it authenticates before sending the request)
  3. users continue to execute requests using the token from step 2
  4. service ends (logout)

This PR implements the lazy login pattern, by exposing a new optional argument to the authentication.login() function.

mdesousa commented 1 year ago

hello @jonathancouchman @gergelykovacs , wondering if you had a chance to review this? by the way, i looked through those static code analysis warnings but they seem inconsistent with the existing code? for example, i see warnings about strings requiring double quotes... but i see the existing code uses single quotes. it would be very helpful to get this merged in the library, thanks.