UNPKG

@cutls/megalodon

Version:

Mastodon, Pleroma, Misskey API client for node.js and browser

59 lines (58 loc) 1.72 kB
import axios from 'axios'; export const detector = async (url) => { return (await getData(url)).compatibleSns; }; const getSemanticVersionNumber = (version) => { const match = version.match(/^(\d+\.\d+\.\d+)/); if (match) { return match[1]; } else { return version; } }; export const getData = async (url) => { const options = { timeout: 20000 }; try { const res = await axios.get(`${url}/api/v1/instance`, options); if (res.data.version) { const ver = getSemanticVersionNumber(res.data.version); if (ver !== res.data.version) { return { url: url, compatibleSns: 'pleroma', softwareName: 'Pleroma', version: res.data.version, semanticVersionCompatibleNumber: ver }; } else { return { url: url, compatibleSns: 'mastodon', softwareName: 'Mastodon', version: res.data.version, semanticVersionCompatibleNumber: ver }; } } } catch { const res = await axios.post(`${url}/api/meta`, options); if (res.data.version) { return { url: url, compatibleSns: 'misskey', softwareName: 'Misskey', version: res.data.version, semanticVersionCompatibleNumber: res.data.version }; } else { throw new Error('Unknown SNS'); } } throw new Error('Unknown SNS'); };