1 var REST = library.REST.REST();
  2 var kValidUrls = [
  3   "http://mediabeacon.angular.prod.s3-website.us-east-2.amazonaws.com/index.html",
  4   "https://s3.us-east-2.amazonaws.com/mediabeacon.angular.prod/index.html",
  5   "http://mediabeacon.angular.dev.s3-website.us-east-2.amazonaws.com/index.html",
  6   "https://s3.us-east-2.amazonaws.com/mediabeacon.angular.dev/index.html",
  7   "http://localhost:4200/",
  8   "https://localhost:4200/",
  9 ];
 10 
 11 var kDestRegex = /invalidateSession\?dest=(.*)$/gm;
 12 (function main(theRedirectUrl, theMbUrl, theKeyName) {
 13   var aPostInvalidateSessionRedirect = kDestRegex.exec(theRedirectUrl);
 14   if (
 15     !aPostInvalidateSessionRedirect ||
 16     kValidUrls.indexOf(aPostInvalidateSessionRedirect[1]) < 0
 17   ) {
 18     REST.pushError(
 19       REST.errors.e400,
 20       "Invalid 'dest' parameter: " + theRedirectUrl
 21     );
 22     return REST.execute();
 23   }
 24   if (!theRedirectUrl) {
 25     REST.pushError(
 26       REST.errors.e400,
 27       "Include the 'dest' parameter to redirect to"
 28     );
 29     return REST.execute();
 30   }
 31   theRedirectUrl = decodeURI(theRedirectUrl);
 32   var aKey = REST.callRESTWorkflow("getApiKey", {
 33     name: theKeyName,
 34   });
 35 
 36   var aRedirect = encodeURI(
 37     theRedirectUrl +
 38       "?credentials=" +
 39       JSON.stringify({
 40         apiKey: aKey,
 41         url: theMbUrl,
 42       })
 43   );
 44 
 45   //This doesn't work on 2018.1 :(
 46   //context.setResponseHeader("Status", "302");
 47   //context.setResponseHeader("Location", aRedirect);
 48 
 49   // Fallback to old way of setting response headers
 50   return "<header>Status:302\nLocation:" + aRedirect + "\n</header>\n";
 51 })(
 52   context.getParameter("dest"),
 53   context.getParameter("mb_url"),
 54   context.getParameter("key_name")
 55 );
 56