You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

53 lines
1.1 KiB

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);