UNPKG

kod-temp

Version:

Workano Communications SDK

94 lines (93 loc) 5.2 kB
import ApiRequester from "../utils/api-requester"; import CallerID from "../domain/CallerID"; import Profile from "../domain/Profile"; import SipLine from "../domain/SipLine"; import ExternalApp from "../domain/ExternalApp"; import Meeting from "../domain/Meeting"; import MeetingAuthorization from "../domain/MeetingAuthorization"; import { convertKeysFromCamelToUnderscore } from "../utils/object"; export default (client, baseUrl) => ({ addUser: (user) => client.post(`${baseUrl}/users`, user), listUsers: () => client.get(`${baseUrl}/users`, null), getUser: (userUuid) => client.get(`${baseUrl}/users/${userUuid}`, null).then(Profile.parse), updateUser: (userUuid, profile) => { const body = { firstname: profile.firstName, lastname: profile.lastName, email: profile.email, mobile_phone_number: profile.mobileNumber, }; return client.put(`${baseUrl}/users/${userUuid}`, body, null, ApiRequester.successResponseParser); }, updateForwardOption: (userUuid, key, destination, enabled) => { const url = `${baseUrl}/users/${userUuid}/forwards/${key}`; return client.put(url, { destination, enabled, }, null, ApiRequester.successResponseParser); }, updateDoNotDisturb: (userUuid, enabled) => client.put(`${baseUrl}/users/${userUuid}/services/dnd`, { enabled, }, null, ApiRequester.successResponseParser), getUserLineSip: (userUuid, lineId) => client .get(`${baseUrl}/users/${userUuid}/lines/${lineId}/associated/endpoints/sip?view=merged`) .then(SipLine.parse), getUserLinesSip(userUuid, lineIds) { // We have to catch all exception, unless Promise.all will returns an empty array for 2 lines with a custom one: // The custom line will throw a 404 and break the Promise.all. return Promise.all(lineIds.map((lineId) => this.getUserLineSip(userUuid, lineId).catch(() => null))); }, getUserLineSipFromToken(userUuid) { return this.getUser(userUuid).then((user) => { if (!user.lines.length) { console.warn(`No sip line for user: ${userUuid}`); return null; } const line = user.lines[0]; return this.getUserLineSip(userUuid, line.uuid || line.id); }); }, listTemplates: () => client.get(`${baseUrl}/endpoints/sip/templates`, null), listApplications: () => client.get(`${baseUrl}/applications`, null), getInfos: () => client.get(`${baseUrl}/infos`, null), getExternalApps: (userUuid) => client .get(`${baseUrl}/users/${userUuid}/external/apps`) .then(ExternalApp.parseMany), getExternalApp: async (userUuid, name) => { const url = `${baseUrl}/users/${userUuid}/external/apps/${name}?view=fallback`; try { return await client.get(url).then(ExternalApp.parse); } catch (e) { return null; } }, getMyMeetings: () => client .get(`${baseUrl}/users/me/meetings`) .then((response) => Meeting.parseMany(response.items)), createMyMeeting: (args) => client .post(`${baseUrl}/users/me/meetings`, convertKeysFromCamelToUnderscore(args)) .then(Meeting.parse), updateMyMeeting: (meetingUuid, data) => client.put(`${baseUrl}/users/me/meetings/${meetingUuid}`, convertKeysFromCamelToUnderscore(data), null, ApiRequester.successResponseParser), deleteMyMeeting: (meetingUuid) => client.delete(`${baseUrl}/users/me/meetings/${meetingUuid}`, null), getMeeting: (meetingUuid) => client.get(`${baseUrl}/meetings/${meetingUuid}`, null).then(Meeting.parse), meetingAuthorizations: (meetingUuid) => client .get(`${baseUrl}/users/me/meetings/${meetingUuid}/authorizations`, null) .then((response) => MeetingAuthorization.parseMany(response.items)), meetingAuthorizationReject: (meetingUuid, authorizationUuid) => client.put(`${baseUrl}/users/me/meetings/${meetingUuid}/authorizations/${authorizationUuid}/reject`, {}, null, ApiRequester.successResponseParser), meetingAuthorizationAccept: (meetingUuid, authorizationUuid) => client.put(`${baseUrl}/users/me/meetings/${meetingUuid}/authorizations/${authorizationUuid}/accept`, {}, null, ApiRequester.successResponseParser), guestGetMeeting: (meetingUuid) => client .get(`${baseUrl}/guests/me/meetings/${meetingUuid}`, null) .then(Meeting.parse), guestAuthorizationRequest: (userUuid, meetingUuid, username) => client .post(`${baseUrl}/guests/${userUuid}/meetings/${meetingUuid}/authorizations`, { guest_name: username, }) .then(MeetingAuthorization.parse), guestAuthorizationCheck: (userUuid, meetingUuid, authorizationUuid) => client.get(`${baseUrl}/guests/${userUuid}/meetings/${meetingUuid}/authorizations/${authorizationUuid}`, null), getOutgoingCallerIDs: (userUuid) => client .get(`${baseUrl}/users/${userUuid}/callerids/outgoing`, null) .then(CallerID.parseMany), listContexts: () => client.get(`${baseUrl}/contexts`, null), listExtensions: () => client.get(`${baseUrl}/extensions`, null), });