import { parseStringPromise } from 'xml2js'; import axios from 'axios'; import { setupCache } from 'axios-cache-interceptor'; import config from 'config'; const token = config.get('service.sape.token') || process.env.SAPE_TOKEN; /** @external Promise */ /** * @param { string } uri * @param { string } sapeCookie * @returns { Promise} links */ export const getLinks = async (uri, sapeCookie) => { if (!token) { console.warn('Sape is not configured'); return []; } const response = await sape.get(`http://dispencer-01.sape.ru/code.php?user=${token}&host=juick.com&charset=UTF-8&as_xml=true`); const data = await parseStringPromise(response.data); const showCode = token === sapeCookie; const requestURI = showCode ? '*' : uri; const page = data.sape.page.filter(page => { const uri = page['$']['uri']; return uri === requestURI; }); return page.length > 0 ? showCode ? [page[0]._] : page[0].link : []; }; /** @type { import('axios-cache-interceptor').AxiosCacheInstance } */ let sape = setupCache( axios.create({ headers: { 'User-Agent': 'SAPE_Client PHP 1.0.3' } }), { ttl: 3600 * 1000 } );