@eclass/cev-providers
Version:
Integración Proveedores CEV
102 lines (93 loc) • 2.33 kB
text/typescript
import { Meeting } from '../'
import { fetchEndpoint } from './lib/fetchEndpoint'
// import he = require('fast-xml-parser')
/**
* Crear meeting en Adobeconnect
*
* @example
* const createMeeting = createMeeting({url, name, dateInit, dateEnd})
*/
export const createMeeting = async ({
url,
name,
dateInit,
dateEnd,
token
}: Meeting): Promise<Meeting> => {
let scoId = null
/**
* Obtener `sco_id`.
*/
try {
const getShortcutId = await fetchEndpoint(`${url}/api/xml`, {
session: token,
action: 'sco-shortcuts'
})
if (getShortcutId.response.results.status['@_code'] === 'ok') {
scoId = getShortcutId.response.results.shortcuts.sco.find(
short => short['@_type'] === 'user-meetings'
)['@_sco-id']
}
} catch (err) {
throw new Error(err)
}
/**
* Validar si meeting ya existe.
*/
try {
const checkMeeting = await fetchEndpoint(`${url}/api/xml`, {
session: token,
action: 'sco-contents',
'sco-id': scoId,
'filter-type': 'meeting',
'filter-name': name
})
if (
checkMeeting.response.results.status['@_code'] === 'ok' &&
checkMeeting.response.results.scos.sco
) {
return {
name,
dateInit,
scoId: checkMeeting.response.results.scos.sco['@_sco-id'],
url: url + checkMeeting.response.results.scos.sco['url-path'],
log: checkMeeting.log
}
}
} catch (err) {
throw new Error(err)
}
/**
* Crear meeting
*/
try {
const createMeeting = await fetchEndpoint(`${url}/api/xml`, {
session: token,
action: 'sco-update',
type: 'meeting',
name,
'url-path': name.toLowerCase().replace(/\s/g, '-'),
'folder-id': scoId,
'date-begin': dateInit,
'date-end': dateEnd
})
if (
createMeeting.response.results.status['@_code'] !== 'ok' ||
!createMeeting.response.results.sco
) {
throw new Error(
'Bad response createMeeting: ' +
createMeeting.response.results.statusText
)
}
return {
name,
dateInit,
scoId: createMeeting.response.results.sco['@_sco-id'],
url: url + createMeeting.response.results.sco['url-path'],
log: createMeeting.log
}
} catch (err) {
throw new Error(err)
}
}