kopia lustrzana https://github.com/manuelkasper/sotlas-api
Add API for obtaining solar data
rodzic
04f6e36486
commit
46ecf82c79
|
@ -79,3 +79,7 @@ config.mail = {
|
|||
host: "neon1.net",
|
||||
port: 587
|
||||
};
|
||||
|
||||
config.solardata = {
|
||||
apiKey: 'xxxxxxxxxxxxxxxxx'
|
||||
};
|
||||
|
|
|
@ -16,6 +16,7 @@ const activations = require('./activations');
|
|||
const utils = require('./utils');
|
||||
const photos_router = require('./photos_router')
|
||||
const tracks_router = require('./tracks_router')
|
||||
const solardata = require('./solardata')
|
||||
const maxmind = require('maxmind');
|
||||
|
||||
let dbChecker = (req, res, next) => {
|
||||
|
@ -40,6 +41,7 @@ app.use('/activations', activations);
|
|||
app.use('/users', users);
|
||||
app.use('/photos', photos_router);
|
||||
app.use('/tracks', tracks_router);
|
||||
app.use('/solardata', solardata);
|
||||
|
||||
let sotaSpotReceiver = new SotaSpotReceiver();
|
||||
let rbnReceiver = new RbnReceiver();
|
||||
|
|
|
@ -0,0 +1,80 @@
|
|||
const express = require('express')
|
||||
const {check, validationResult} = require('express-validator')
|
||||
const config = require('./config')
|
||||
const db = require('./db')
|
||||
|
||||
let router = express.Router()
|
||||
module.exports = router
|
||||
|
||||
router.get('/:date/:hour',
|
||||
check("date").matches(/^\d\d\d\d-\d\d-\d\d$/),
|
||||
check("hour").isInt({gt: -1, lt: 24}),
|
||||
(req, res) => {
|
||||
|
||||
db.getDb().collection('solardata').findOne({date: req.params.date, hour: req.params.hour}, (err, solardata) => {
|
||||
if (err) {
|
||||
return res.status(500).end();
|
||||
}
|
||||
|
||||
if (!solardata) {
|
||||
return res.status(404).end();
|
||||
}
|
||||
|
||||
delete solardata._id
|
||||
delete solardata.date
|
||||
delete solardata.hour
|
||||
|
||||
return res.json(solardata)
|
||||
})
|
||||
})
|
||||
|
||||
router.get('/latest', (req, res) => {
|
||||
db.getDb().collection('solardata').find().sort({date: -1, hour: -1}).limit(1).toArray((err, solardataArr) => {
|
||||
if (err) {
|
||||
return res.status(500).end();
|
||||
}
|
||||
|
||||
let solardata = solardataArr[0]
|
||||
|
||||
if (!solardata) {
|
||||
return res.status(404).end();
|
||||
}
|
||||
|
||||
delete solardata._id
|
||||
delete solardata.date
|
||||
delete solardata.hour
|
||||
|
||||
return res.json(solardata)
|
||||
})
|
||||
})
|
||||
|
||||
router.post('/:date/:hour',
|
||||
check("date").matches(/^\d\d\d\d-\d\d-\d\d$/),
|
||||
check("hour").isInt({gt: -1, lt: 24}),
|
||||
check(['sfi', 'r', 'a', 'k', 'expK']).isInt(),
|
||||
check('aurora').isBoolean(),
|
||||
(req, res) => {
|
||||
|
||||
if (req.body.apiKey !== config.solardata.apiKey) {
|
||||
return res.status(401).end()
|
||||
}
|
||||
|
||||
const errors = validationResult(req);
|
||||
if (!errors.isEmpty()) {
|
||||
return res.status(400).json({errors: errors.array()})
|
||||
}
|
||||
|
||||
db.getDb().collection('solardata').replaceOne({date: req.params.date, hour: req.params.hour}, {
|
||||
date: req.params.date,
|
||||
hour: req.params.hour,
|
||||
sfi: req.body.sfi,
|
||||
r: req.body.r,
|
||||
a: req.body.a,
|
||||
k: req.body.k,
|
||||
expK: req.body.expK,
|
||||
sa: req.body.sa,
|
||||
gmf: req.body.gmf,
|
||||
aurora: req.body.aurora
|
||||
}, {upsert: true})
|
||||
return res.status(204).end()
|
||||
})
|
|
@ -47,7 +47,11 @@ class WebSocketManager extends EventEmitter {
|
|||
return;
|
||||
}
|
||||
ws.isAlive = false;
|
||||
ws.ping();
|
||||
try {
|
||||
ws.ping();
|
||||
} catch (e) {
|
||||
console.error(e);
|
||||
}
|
||||
}, PING_INTERVAL);
|
||||
});
|
||||
}
|
||||
|
|
Ładowanie…
Reference in New Issue