* @param {string} url * @returns {Promise }
(url)
| 26 | * @returns {Promise<import('./types.ts').XMPPProvider[]>} |
| 27 | */ |
| 28 | async function fetchProviderData (url) { |
| 29 | try { |
| 30 | const response = await fetch(url); |
| 31 | if (!response.ok) { |
| 32 | throw new Error(`HTTP ${response.status}`); |
| 33 | } |
| 34 | const data = await response.json(); |
| 35 | if (Array.isArray(data)) { |
| 36 | const providers = data |
| 37 | .map(item => typeof item === 'string' ? { jid: item, category: '' } : item) |
| 38 | .filter(item => item.jid); |
| 39 | log.debug(`Fetched ${providers.length} XMPP providers`); |
| 40 | return providers; |
| 41 | } |
| 42 | return []; |
| 43 | } catch (err) { |
| 44 | log.warn(`Failed to fetch XMPP providers from ${url}: ${err.message}`); |
| 45 | return []; |
| 46 | } |
| 47 | } |
| 48 | |
| 49 | /** |
| 50 | * Fetches the list of XMPP providers from the configured URL. |
no test coverage detected