import { Elysia } from 'elysia' import { Eta } from "eta" const eta = new Eta({ views: "./templates" }) import Meteostanica from '../../utils/meteostanica' import editEnvVariable from '../../utils/editEnvVariable' import getWifiIPv4 from '../../utils/getWifiIPv4' export default (langName, lang) => new Elysia() .get('/', ({ set }) => { const data = Meteostanica.getData() set.headers['content-type'] = 'text/html; charset=utf8' return eta.render(`${langName}/index`, { lang, data }) }) .get('/settings', ({ set }) => { set.headers['content-type'] = 'text/html; charset=utf8' return eta.render(`${langName}/settings`, { wifiIPv4: getWifiIPv4(), postDataEnabled: process.env.POST_DATA_ENABLED, cloudURL: process.env.BACKEND_URL, websocketKey: process.env.BACKEND_WEBSOCKET_KEY }) }) .post('/settings', async ({ body, set, redirect }) => { const postDataEnabled = body?.postDataEnabled const cloudURL = body?.cloudURL const websocketKey = body?.websocketKey if (!cloudURL) { set.headers['content-type'] = 'text/html; charset=utf8' return eta.render(`${langName}/settings`, { wifiIPv4: getWifiIPv4(), lang, error: `noCloudURL` }) } if (!websocketKey) { set.headers['content-type'] = 'text/html; charset=utf8' return eta.render(`${langName}/settings`, { wifiIPv4: getWifiIPv4(), lang, error: `noWebsocketKey` }) } await editEnvVariable(`POST_DATA_ENABLED`, postDataEnabled ?? "false") await editEnvVariable(`BACKEND_URL`, cloudURL) await editEnvVariable(`BACKEND_WEBSOCKET_KEY`, websocketKey) return redirect(`${langName === `sk` ? `/` : `/en`}`) }) .get('/currentData', () => { const data = Meteostanica.getData() return data?.[0] })