UNPKG

caccl-canvas-partial-simulator

Version:

Partially simulates a Canvas instance, handling OAuth token exchanges and forwarding API requests

74 lines (69 loc) 3.3 kB
import CACCL_PATHS from '../shared/constants/CACCL_PATHS'; /** * Template for LTI install XML * @author Gabe Abrams * @param opts object containing all args * @param opts.appName name of the app * @param [opts.customParams] map of custom params */ const genInstallXML = ( opts: { appName: string, customParams: { [k: string]: string }, }, ) => { const { appName, customParams, } = opts; let customParamsInsert = ''; if (customParams) { const customParamItems: string[] = ( Object.entries(customParams) .map(([name, value]) => { return `<lticm:property name="${name}">${value}</lticm:property>\n`; }) ); customParamsInsert = `<blti:custom>\n${customParamItems.join('')}</blti:custom>`; } return ` <?xml version="1.0" encoding="UTF-8"?> <cartridge_basiclti_link xmlns="http://www.imsglobal.org/xsd/imslticc_v1p0" xmlns:blti="http://www.imsglobal.org/xsd/imsbasiclti_v1p0" xmlns:lticm="http://www.imsglobal.org/xsd/imslticm_v1p0" xmlns:lticp="http://www.imsglobal.org/xsd/imslticp_v1p0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation = "http://www.imsglobal.org/xsd/imslticc_v1p0 http://www.imsglobal.org/xsd/lti/ltiv1p0/imslticc_v1p0.xsd http://www.imsglobal.org/xsd/imsbasiclti_v1p0 http://www.imsglobal.org/xsd/lti/ltiv1p0/imsbasiclti_v1p0.xsd http://www.imsglobal.org/xsd/imslticm_v1p0 http://www.imsglobal.org/xsd/lti/ltiv1p0/imslticm_v1p0.xsd http://www.imsglobal.org/xsd/imslticp_v1p0 http://www.imsglobal.org/xsd/lti/ltiv1p0/imslticp_v1p0.xsd"> <blti:title>${appName}</blti:title> <blti:description>CACCL test app (you can remove this)</blti:description> <blti:icon></blti:icon> <blti:launch_url>https://localhost:8080${CACCL_PATHS.LAUNCH}</blti:launch_url> ${customParamsInsert} <blti:extensions platform="canvas.instructure.com"> <lticm:property name="privacy_level">public</lticm:property> <lticm:options name="homework_submission"> <lticm:property name="url">https://localhost:8080${CACCL_PATHS.LAUNCH}</lticm:property> <lticm:property name="text">${appName}</lticm:property> <lticm:property name="selection_width">400</lticm:property> <lticm:property name="selection_height">300</lticm:property> <lticm:property name="enabled">true</lticm:property> <lticm:property name="windowTarget">_blank</lticm:property> </lticm:options> <lticm:options name="course_navigation"> <lticm:property name="url">https://localhost:8080${CACCL_PATHS.LAUNCH}</lticm:property> <lticm:property name="text">${appName}</lticm:property> <lticm:property name="visibility">public</lticm:property> <lticm:property name="default">disabled</lticm:property> <lticm:property name="enabled">false</lticm:property> <lticm:property name="windowTarget">_blank</lticm:property> </lticm:options> </blti:extensions> <cartridge_bundle identifierref="BLTI001_Bundle"/> <cartridge_icon identifierref="BLTI001_Icon"/> </cartridge_basiclti_link> `; }; export default genInstallXML;