Table of Contents [Hide/Show]
Live Management Service 1.0 Methods hasstream authorize start stop activate deactivate annotation/activate annotation/deactivate request Data Types Credentials Request Token Sample code Javascript
<!DOCTYPE html> <html> <head> <title></title> <meta charset="utf-8" /> < script src="fetch.js"></script> < script src="es6-promise.auto.js"></script> </head> <body> </body> </html> < script type="text/javascript"> var restUri = "https://live.companywebcast.com/api/", username = "XXX", password = "YYY"; (function () { var webcastId = "00000000-a06b-421c-a453-6b44c59edc05", topicIds = ["00000000-593c-4f4c-af04-c02a05155a65", "00000000-0e0f-4163-93e2-f9f302d3d136", "00000000-08b5-40f1-a378-0b6bb7d6fc06", "00000000-7bc0-41fb-96c3-b7f5efacf663", "00000000-dccd-4d17-ae2c-ca0406afce92"]; WaitForReadyToPlay(webcastId).then(function () { return GetToken(webcastId); }).then(function (token) { Start(webcastId, token).then(function () { return wait(10000); }).then(function () { return ActivateTopics(topicIds, webcastId, token); }).then(function () { return Stop(webcastId, token); }); }); })(); function WaitForReadyToPlay(webcastId) { console.log("waiting for ready to play"); var init = { method: "GET", mode: 'cors' }; var request = new Request(restUri + "webcast/" + webcastId + "/hasstream", init) function checkstream() { return fetch(request).then(function (response) { return response.json().then(function (json) { if (json) { console.log("ready to play"); return; } else { return wait(1000).then(checkstream); } }); }); } return checkstream(); } function GetToken(webcastId) { console.log("get live manager token"); var headers = new Headers({ "Content-Type" : "application/json" }); var init = { method: "POST", mode: 'cors', body: JSON.stringify({ username: username, password: password }), headers: headers }; var request = new Request(restUri + "webcast/" + webcastId + "/authorize", init) return fetch(request).then(function (response) { return response.json().then(function (json) { console.log("live manager token " + json.token); return json.token; }); }); } function Start(webcastId, token) { console.log("start webcast"); var headers = new Headers({ "Authorization" : token }); var init = { method: "POST", mode: 'cors', headers: headers }; var request = new Request(restUri + "webcast/" + webcastId + "/start", init); return fetch(request).then(function (response) { return response.json().then(function (json) { return WaitForRequest(webcastId, json.id, token); }); }); } function Stop(webcastId, token) { console.log("stop webcast"); var headers = new Headers({ "Authorization": token }); var init = { method: "POST", mode: 'cors', headers: headers }; var request = new Request(restUri + "webcast/" + webcastId + "/stop", init); return fetch(request).then(function (response) { return response.json().then(function (json) { return WaitForRequest(webcastId, json.id, token); }); }); } function ActivateResource(webcastId, resourceId, resourceType, token) { console.log("activating resource " + resourceType + " " + resourceId); var headers = new Headers({ "Authorization": token }); var init = { method: "POST", mode: 'cors', headers: headers }; var request = new Request(restUri + "webcast/" + webcastId + "/" + resourceType + "/" + resourceId + "/activate", init) return fetch(request).then(function (response) { return response.json().then(function (json) { return WaitForRequest(webcastId, json.id, token); }); }); } function WaitForRequest(webcastId, requestId, token) { var headers = new Headers({ "Authorization" : token }); var init = { method: "GET", mode: 'cors', headers: headers }; var request = new Request(restUri + "webcast/" + webcastId + "/request/" + requestId, init) function checkrequest() { return fetch(request).then(function (response) { return response.json().then(function (json) { switch (json.state) { case "success": return; case "error": throw new Error(json.message); default: return wait(1000).then(checkrequest); break; } }); }); } return checkrequest(); } function ActivateTopics(topicIds, webcastId, token) { return topicIds.reduce(function (promise, topicId) { return promise.then(function () { return ActivateResource(webcastId, topicId, "topic", token).then(function () { console.log("topic activated"); return wait(10000); }); }); }, Promise.resolve()); } function wait(t) { console.log("waiting for " + t / 1000 + " seconds"); return new Promise(function (resolve) { setTimeout(resolve, t) }); } </ script>