mirror of https://github.com/statping/statping
414 lines
11 KiB
JavaScript
414 lines
11 KiB
JavaScript
import axios from 'axios';
|
|
|
|
const qs = require('querystring');
|
|
// axios.defaults.withCredentials = true;
|
|
axios.defaults.withCredentials = false;
|
|
|
|
const tokenKey = 'statping_auth';
|
|
|
|
class Api {
|
|
constructor () {
|
|
this.version = '0.90.74';
|
|
this.commit = '2612402a7782f28ca0b7fc10c941d8c4a1a5acc6';
|
|
}
|
|
|
|
async oauth () {
|
|
const oauth = axios.get('api/oauth').then((response) => response.data);
|
|
return oauth;
|
|
}
|
|
|
|
async core () {
|
|
const core = axios.get('api').then((response) => response.data);
|
|
if (core.allow_reports) {
|
|
await this.sentry_init();
|
|
}
|
|
return core;
|
|
}
|
|
|
|
async core_save (obj) {
|
|
return axios.post('api/core', obj).then((response) => response.data);
|
|
}
|
|
|
|
async oauth_save (obj) {
|
|
return axios.post('api/oauth', obj).then((response) => response.data);
|
|
}
|
|
|
|
async setup_save (data) {
|
|
return axios
|
|
.post('api/setup', qs.stringify(data))
|
|
.then((response) => response.data);
|
|
}
|
|
|
|
async services () {
|
|
return axios.get('api/services').then((response) => response.data);
|
|
}
|
|
|
|
async service (id) {
|
|
return axios.get('api/services/' + id).then((response) => response.data);
|
|
}
|
|
|
|
async service_create (data) {
|
|
return axios.post('api/services', data).then((response) => response.data);
|
|
}
|
|
|
|
async service_update (data) {
|
|
return axios
|
|
.post('api/services/' + data.id, data)
|
|
.then((response) => response.data);
|
|
}
|
|
|
|
async service_hits (id, start, end, group, fill = true) {
|
|
return axios
|
|
.get(
|
|
'api/services/' +
|
|
id +
|
|
'/hits_data?start=' +
|
|
start +
|
|
'&end=' +
|
|
end +
|
|
'&group=' +
|
|
group +
|
|
'&fill=' +
|
|
fill
|
|
)
|
|
.then((response) => response.data);
|
|
}
|
|
|
|
async service_ping (id, start, end, group, fill = true) {
|
|
return axios
|
|
.get(
|
|
'api/services/' +
|
|
id +
|
|
'/ping_data?start=' +
|
|
start +
|
|
'&end=' +
|
|
end +
|
|
'&group=' +
|
|
group +
|
|
'&fill=' +
|
|
fill
|
|
)
|
|
.then((response) => response.data);
|
|
}
|
|
|
|
async service_failures_data (id, start, end, group, fill = true) {
|
|
return axios
|
|
.get(
|
|
'api/services/' +
|
|
id +
|
|
'/failure_data?start=' +
|
|
start +
|
|
'&end=' +
|
|
end +
|
|
'&group=' +
|
|
group +
|
|
'&fill=' +
|
|
fill
|
|
)
|
|
.then((response) => response.data);
|
|
}
|
|
|
|
async service_uptime (id, start, end) {
|
|
return axios
|
|
.get('api/services/' + id + '/uptime_data?start=' + start + '&end=' + end)
|
|
.then((response) => response.data);
|
|
}
|
|
|
|
async service_heatmap (id, start, end, group) {
|
|
return axios
|
|
.get('api/services/' + id + '/heatmap')
|
|
.then((response) => response.data);
|
|
}
|
|
|
|
async service_failures (id, start, end, limit = 999, offset = 0) {
|
|
return axios
|
|
.get(
|
|
'api/services/' +
|
|
id +
|
|
'/failures?start=' +
|
|
start +
|
|
'&end=' +
|
|
end +
|
|
'&limit=' +
|
|
limit +
|
|
'&offset=' +
|
|
offset
|
|
)
|
|
.then((response) => response.data);
|
|
}
|
|
|
|
async service_failures_delete (service) {
|
|
return axios
|
|
.delete('api/services/' + service.id + '/failures')
|
|
.then((response) => response.data);
|
|
}
|
|
|
|
async service_delete (id) {
|
|
return axios.delete('api/services/' + id).then((response) => response.data);
|
|
}
|
|
|
|
async services_reorder (data) {
|
|
return axios
|
|
.post('api/reorder/services', data)
|
|
.then((response) => response.data);
|
|
}
|
|
|
|
async checkins () {
|
|
return axios.get('api/checkins').then((response) => response.data);
|
|
}
|
|
|
|
async groups () {
|
|
return axios.get('api/groups').then((response) => response.data);
|
|
}
|
|
|
|
async groups_reorder (data) {
|
|
return axios
|
|
.post('api/reorder/groups', data)
|
|
.then((response) => response.data);
|
|
}
|
|
|
|
async group_delete (id) {
|
|
return axios.delete('api/groups/' + id).then((response) => response.data);
|
|
}
|
|
|
|
async group_create (data) {
|
|
return axios.post('api/groups', data).then((response) => response.data);
|
|
}
|
|
|
|
async group_update (data) {
|
|
return axios
|
|
.post('api/groups/' + data.id, data)
|
|
.then((response) => response.data);
|
|
}
|
|
|
|
async users () {
|
|
return axios.get('api/users').then((response) => response.data);
|
|
}
|
|
|
|
async user_create (data) {
|
|
return axios.post('api/users', data).then((response) => response.data);
|
|
}
|
|
|
|
async user_update (data) {
|
|
return axios
|
|
.post('api/users/' + data.id, data)
|
|
.then((response) => response.data);
|
|
}
|
|
|
|
async user_delete (id) {
|
|
return axios.delete('api/users/' + id).then((response) => response.data);
|
|
}
|
|
|
|
async incident_updates (incident) {
|
|
return axios
|
|
.get('api/incidents/' + incident.id + '/updates')
|
|
.then((response) => response.data);
|
|
}
|
|
|
|
async incident_update_create (update) {
|
|
return axios
|
|
.post('api/incidents/' + update.incident + '/updates', update)
|
|
.then((response) => response.data);
|
|
}
|
|
|
|
async incident_update_delete (update) {
|
|
return axios
|
|
.delete('api/incidents/' + update.incident + '/updates/' + update.id)
|
|
.then((response) => response.data);
|
|
}
|
|
|
|
async incidents_service (id) {
|
|
return axios
|
|
.get('api/services/' + id + '/incidents')
|
|
.then((response) => response.data);
|
|
}
|
|
|
|
async incident_create (service_id, data) {
|
|
return axios
|
|
.post('api/services/' + service_id + '/incidents', data)
|
|
.then((response) => response.data);
|
|
}
|
|
|
|
async incident_delete (incident) {
|
|
return axios
|
|
.delete('api/incidents/' + incident.id)
|
|
.then((response) => response.data);
|
|
}
|
|
|
|
async checkin (api) {
|
|
return axios.get('api/checkins/' + api).then((response) => response.data);
|
|
}
|
|
|
|
async checkin_create (data) {
|
|
return axios.post('api/checkins', data).then((response) => response.data);
|
|
}
|
|
|
|
async checkin_delete (checkin) {
|
|
return axios
|
|
.delete('api/checkins/' + checkin.api_key)
|
|
.then((response) => response.data);
|
|
}
|
|
|
|
async messages () {
|
|
return axios.get('api/messages').then((response) => response.data);
|
|
}
|
|
|
|
async message_create (data) {
|
|
return axios.post('api/messages', data).then((response) => response.data);
|
|
}
|
|
|
|
async message_update (data) {
|
|
return axios
|
|
.post('api/messages/' + data.id, data)
|
|
.then((response) => response.data);
|
|
}
|
|
|
|
async message_delete (id) {
|
|
return axios.delete('api/messages/' + id).then((response) => response.data);
|
|
}
|
|
|
|
async group (id) {
|
|
return axios.get('api/groups/' + id).then((response) => response.data);
|
|
}
|
|
|
|
async notifiers () {
|
|
return axios.get('api/notifiers').then((response) => response.data);
|
|
}
|
|
|
|
async notifier_save (data) {
|
|
return axios
|
|
.post('api/notifier/' + data.method, data)
|
|
.then((response) => response.data);
|
|
}
|
|
|
|
async notifier_test (data, notifier) {
|
|
return axios
|
|
.post('api/notifier/' + notifier + '/test', data)
|
|
.then((response) => response.data);
|
|
}
|
|
|
|
async renewApiKeys () {
|
|
return axios.get('api/renew').then((response) => response.data);
|
|
}
|
|
|
|
async logs () {
|
|
return axios.get('api/logs').then((response) => response.data) || [];
|
|
}
|
|
|
|
async logs_last () {
|
|
return axios.get('api/logs/last').then((response) => response.data);
|
|
}
|
|
|
|
async theme () {
|
|
return axios.get('api/theme').then((response) => response.data);
|
|
}
|
|
|
|
async theme_generate (create = true) {
|
|
if (create) {
|
|
return axios.get('api/theme/create').then((response) => response.data);
|
|
} else {
|
|
return axios.delete('api/theme').then((response) => response.data);
|
|
}
|
|
}
|
|
|
|
async theme_save (data) {
|
|
return axios.post('api/theme', data).then((response) => response.data);
|
|
}
|
|
|
|
async import (data) {
|
|
return axios
|
|
.post('api/settings/import', data)
|
|
.then((response) => response.data);
|
|
}
|
|
|
|
async check_token (token) {
|
|
const f = { token: token };
|
|
return axios
|
|
.post('api/users/token', qs.stringify(f))
|
|
.then((response) => response.data);
|
|
}
|
|
|
|
async login (username, password) {
|
|
const f = { username: username, password: password };
|
|
return axios
|
|
.post('api/login', qs.stringify(f))
|
|
.then((response) => response.data);
|
|
}
|
|
|
|
async logout () {
|
|
return axios.get('api/logout').then((response) => response.data);
|
|
}
|
|
|
|
async scss_base () {
|
|
return await axios({
|
|
url: '/scss/base.scss',
|
|
method: 'GET',
|
|
responseType: 'blob',
|
|
}).then((response) => {
|
|
const reader = new window.FileReader();
|
|
return reader.readAsText(response.data);
|
|
});
|
|
}
|
|
|
|
async configs () {
|
|
return (
|
|
axios.get('api/settings/configs').then((response) => response.data) || []
|
|
);
|
|
}
|
|
|
|
async configs_save (data) {
|
|
return (
|
|
axios
|
|
.post('api/settings/configs', data)
|
|
.then((response) => response.data) || []
|
|
);
|
|
}
|
|
|
|
token () {
|
|
return $cookies.get(tokenKey);
|
|
}
|
|
|
|
authToken () {
|
|
const tk = $cookies.get(tokenKey);
|
|
if (tk) {
|
|
return { Authorization: 'Bearer ' + tk };
|
|
} else {
|
|
return {};
|
|
}
|
|
}
|
|
|
|
async github_release () {
|
|
return fetch(
|
|
'https://api.github.com/repos/statping/statping/releases/latest'
|
|
).then((response) => response.json());
|
|
}
|
|
|
|
async allActions (...all) {
|
|
await axios.all([ all ]);
|
|
}
|
|
|
|
async downtimes ({ serviceId, start, end, skip, count, subStatus }) {
|
|
return axios.get('api/downtimes', {
|
|
params: { service_id: serviceId, start, end, skip, count, sub_status: subStatus }
|
|
}).then((response) => response.data);
|
|
}
|
|
|
|
async downtime (id) {
|
|
return axios.get(`api/downtimes/${id}`).then((response) => response.data);
|
|
}
|
|
|
|
async downtime_create (data) {
|
|
return axios.post('/api/downtimes', data).then((response) => response.data);
|
|
}
|
|
|
|
async downtime_update ({ id, data }) {
|
|
return axios.patch(`/api/downtimes/${id}`, data).then((response) => response.data);
|
|
}
|
|
|
|
async downtime_delete (id) {
|
|
return axios.delete(`/api/downtimes/${id}`).then((response) => response.data);
|
|
}
|
|
}
|
|
const api = new Api();
|
|
export default api;
|