[NEW] REST Endpoint `instances.get` (#19926)

Co-authored-by: Diego Sampaio <chinello@gmail.com>
pull/19925/head
Gabriel Thomé 5 years ago committed by GitHub
parent 94d6b0aeb5
commit 25996590b1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 6
      app/api/server/api.d.ts
  2. 1
      app/api/server/index.js
  3. 13
      app/api/server/v1/instances.ts
  4. 13
      server/stream/streamBroadcast.js

@ -0,0 +1,6 @@
import { APIClass } from '.';
export declare const API: {
v1: APIClass;
default: APIClass;
};

@ -37,5 +37,6 @@ import './v1/webdav';
import './v1/oauthapps';
import './v1/custom-sounds';
import './v1/custom-user-status';
import './v1/instances';
export { API, APIClass, defaultRateLimiterOptions } from './api';

@ -0,0 +1,13 @@
import { getInstances } from '../../../../server/stream/streamBroadcast';
import { hasPermission } from '../../../authorization/server';
import { API } from '../api';
API.v1.addRoute('instances.get', { authRequired: true }, {
get() {
if (!hasPermission(this.userId, 'view-statistics')) {
return API.v1.unauthorized();
}
return API.v1.success({ instances: getInstances() });
},
});

@ -314,6 +314,13 @@ function startStreamBroadcast() {
});
}
export function getInstances() {
return Object.keys(connections).map((address) => {
const conn = connections[address];
return Object.assign({ address, currentStatus: conn._stream.currentStatus }, _.pick(conn, 'instanceRecord', 'broadcastAuth'));
});
}
Meteor.startup(function() {
return startStreamBroadcast();
});
@ -325,10 +332,6 @@ Meteor.methods({
method: 'instances/get',
});
}
return Object.keys(connections).map((address) => {
const conn = connections[address];
return Object.assign({ address, currentStatus: conn._stream.currentStatus }, _.pick(conn, 'instanceRecord', 'broadcastAuth'));
});
return getInstances();
},
});

Loading…
Cancel
Save