Created an Emby Connect API with the required methods to orchestrate a set of calls towards
EmbyConnect to build a JellyseerrLoginResponse object. Added an EmbyConnect authentication call to
the Jellyfin login() method as the last authentication attempt, but only if the username is an email
address. Updated the post() method on the ExternalApi class to handle request bodies that need to be
x-www-form-urlencoded.
#749
* feat(jellyfinapi): create Jellyfin API key from admin user
* fix(jellyfinapi): add migration script for Jellyfin API key
* feat(jellyfinapi): use Jellyfin API key instead of admin auth token
* fix(jellyfinapi): fix api key migration
* feat(jellyfinapi): add API key field to Jellyfin settings
* fix: move the API key field in the Jellyfin settings
* refactor: switch ExternalAPI to Fetch API
* fix: add missing auth token in Plex request
* fix: send proper URL params
* ci: try to fix format checker
* ci: ci: try to fix format checker
* ci: try to fix format checker
* refactor: make tautulli use the ExternalAPI class
* refactor: add rate limit to fetch api
* refactor: add rate limit to fetch api
* refactor: switch server from axios to fetch api
* refactor: switch frontend from axios to fetch api
* fix: switch from URL objects to strings
* fix: use the right search params for ExternalAPI
* fix: better log for ExternalAPI errors
* feat: add retry to external API requests
* fix: try to fix network errors with IPv6
* fix: imageProxy rate limit
* revert: remove retry to external API requests
* feat: set IPv4 first as an option
* fix(jellyfinapi): add missing argument in JellyfinAPI constructor
* refactor: clean the rate limit utility