peertube-plugin-livechat/server/lib/prosody/api/list-rooms.ts

42 lines
1.1 KiB
TypeScript
Raw Normal View History

import type { RegisterServerOptions } from '@peertube/peertube-types'
import { getCurrentProsody } from './host'
import { getAPIKey } from '../../apikey'
const got = require('got')
interface ProsodyRoomDesc {
jid: string
localpart: string
name: string
lang: string
description: string
lasttimestamp?: number
}
async function listProsodyRooms (options: RegisterServerOptions): Promise<ProsodyRoomDesc[]> {
const logger = options.peertubeHelpers.logger
const currentProsody = getCurrentProsody()
if (!currentProsody) {
throw new Error('It seems that prosody is not binded... Cant list rooms.')
}
// Requesting on localhost, because currentProsody.host does not always resolves correctly (docker use case, ...)
const apiUrl = `http://localhost:${currentProsody.port}/peertubelivechat_list_rooms/list-rooms`
logger.debug('Calling list rooms API on url: ' + apiUrl)
const rooms = await got(apiUrl, {
method: 'GET',
headers: {
authorization: 'Bearer ' + await getAPIKey(options),
host: currentProsody.host
},
responseType: 'json',
resolveBodyOnly: true
})
return rooms
}
export {
listProsodyRooms
}