import { upsertApiKey, validateGrafanaUrl } from '../services/api_keys'; import * as express from 'express' import * as _ from 'lodash'; async function checkConnection(req, res) { const query = req.query; const clientUrl = query.url; if (_.isEmpty(clientUrl)) { res.status(400).send('"url" field is required'); return; } try { validateGrafanaUrl(clientUrl); } catch (e) { res.status(500).send(e.message); return; } res.status(200).send({ version: __VERSION__ }); } async function connectPlugin(req, res) { const body = req.body; const clientUrl = body.url; if (_.isEmpty(clientUrl)) { res.status(400).send('"url" field is required'); return; } const apiToken = body.apiToken; if (_.isEmpty(apiToken)) { res.status(400).send('"apiToken" field is required'); return; } const grafanaUrl = new URL(clientUrl).origin; upsertApiKey(grafanaUrl, apiToken); console.log(`Grafana at ${grafanaUrl} is connected`); res.status(200).send({ version: __VERSION__ }); } export const router = express.Router(); router.get('/', checkConnection); router.post('/', connectPlugin);