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 => { 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) } }