From 40d411e516efee5531404725b45ab89d97172ce8 Mon Sep 17 00:00:00 2001 From: Vitaly Takmazov Date: Fri, 28 Oct 2022 00:14:01 +0300 Subject: Initial SSR --- vnext/server/sape.js | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 vnext/server/sape.js (limited to 'vnext/server/sape.js') diff --git a/vnext/server/sape.js b/vnext/server/sape.js new file mode 100644 index 00000000..d8c9e2ed --- /dev/null +++ b/vnext/server/sape.js @@ -0,0 +1,38 @@ +import { parseStringPromise } from 'xml2js'; +import axios from 'axios'; +import { setupCache } from 'axios-cache-interceptor'; + +const 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 } +); -- cgit v1.2.3