lts-stats-api/app/requests/ivao/session.js

99 lines
2.4 KiB
JavaScript
Raw Normal View History

2023-01-15 18:42:26 +01:00
const { RedisClient } = require('../../db/redis/redis');
2023-01-06 00:58:55 +01:00
const { request } = require('../request');
const getHistoricalSessions = async({ callsign, userId, from, to }) => {
//https://api.ivao.aero/v2/tracker/sessions?connectionType=PILOT&callsign=LTS&from=2022-01-01T00:00:00&to=2023-01-04T23:59:59&perPage=50
const url = 'https://api.ivao.aero/v2/tracker/sessions';
const params = {
connectionType: 'PILOT',
from,
page: 1,
perPage: 100,
to,
};
if (callsign) {
params.callsign = callsign;
}
if (userId) {
params.userId = userId;
}
const options = {
headers: {
apiKey: process.env.IVAO_APIKEY,
},
params,
};
return await _requestHistoricalRecursive([], url, options);
};
async function _requestHistoricalRecursive(data, url, options) {
const { page, pages, items } = await request(url, options);
data = [...data, ...items];
if (page !== pages) {
options.params.page++;
return await _requestHistoricalRecursive(data, url, options)
} else {
return data;
}
}
2023-01-15 18:42:26 +01:00
async function getIvaoSessionTracks(idSession) {
const url = `https://api.ivao.aero/v2/tracker/sessions/${idSession}/tracks`;
const options = {
headers: {
apiKey: process.env.IVAO_APIKEY,
},
};
const tracks = await request(url, options);
return tracks;
}
async function getIvaoSessionLatestTrack(idSession) {
const url = `https://api.ivao.aero/v2/tracker/sessions/${idSession}/tracks/latest`;
const options = {
headers: {
apiKey: process.env.IVAO_APIKEY,
},
};
const tracks = await request(url, options);
return tracks;
}
async function getIvaoPilotsNow(all = false) {
const url = `https://api.ivao.aero/v2/tracker/now/pilots`;
const options = {
headers: {
apiKey: process.env.IVAO_APIKEY,
},
};
const redisUsers = await RedisClient.getPair('users');
const pilots = await request(url, options);
// console.log('redisUsers :>> ', redisUsers);
return all ? pilots : pilots.filter(d => d.callsign.startsWith('LTS'));
}
async function getIvaoLatestSessionFlightPlan(sessionId) {
const url = `https://api.ivao.aero/v2/tracker/sessions/${sessionId}/flightPlans/latest`;
const options = {
headers: {
apiKey: process.env.IVAO_APIKEY,
},
};
const fp = await request(url, options);
return fp;
}
2023-01-06 00:58:55 +01:00
module.exports = {
getHistoricalSessions,
2023-01-15 18:42:26 +01:00
getIvaoSessionTracks,
getIvaoPilotsNow,
getIvaoLatestSessionFlightPlan,
getIvaoSessionLatestTrack,
2023-01-06 00:58:55 +01:00
}