import { parseStringPromise } from 'xml2js' import axios from 'axios' import { setupCache } from 'axios-cache-interceptor' import config from 'config' import debug from 'debug' const log = debug('sape') 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) { log('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 } )