Skip to content

Instantly share code, notes, and snippets.

@robertrv
Created March 22, 2014 17:01
Show Gist options
  • Save robertrv/9710533 to your computer and use it in GitHub Desktop.
Save robertrv/9710533 to your computer and use it in GitHub Desktop.
signiant after jsbeautifier
function retrieveEnvHostName() {
var injectedMstScriptTag = document.getElementById('ms-transfer-api');
var success = false;
var exceptionMsg;
if (injectedMstScriptTag == undefined || injectedMstScriptTag == null || injectedMstScriptTag == '') {
exceptionMsg = "Fatal error: Could not retrieve script tag ms-transfer-api!";
} else {
Signiant.Mst.envHostName = (injectedMstScriptTag).getAttribute('env-host-name');
if (Signiant.Mst.envHostName === undefined || Signiant.Mst.envHostName == null || Signiant.Mst.envHostName.length == 0) {
exceptionMsg = "Fatal error: Could not retrieve env-host-name from script tag ms-transfer-api!";
} else {
success = true;
}
}
if (!success) {
window.alert('Failed to determine the Media Shuttle Transfer API hosted environment! Application will not function.');
throw exceptionMsg;
}
};
(function () {
if (!window.Signiant || !window.Signiant.Mst) {
try {
if (!window.Signiant) window.Signiant = {};
if (!window.Signiant.Mst) window.Signiant.Mst = {};
retrieveEnvHostName();
if (window.addEventListener) {
window.addEventListener("load", addDOMListeners, false);
} else if (window.attachEvent) {
window.attachEvent("onload", addDOMListeners);
} else {
window['onload'] = addDOMListeners;
}
} catch (e) {
if (window.console) {
if (console.log) {
console.log("Fatal Error: Failed to successfully initialize the application!");
console.log(e);
}
}
}
}
})();
Signiant.Mst.apiVersion = "1.0";
Signiant.Mst.apiKey;
Signiant.Mst.isValidAPIKey = false;
Signiant.Mst.mstScriptTag;
Signiant.Mst.pluginAutoDetect = false;
Signiant.Mst.isPluginInstalled = false;
Signiant.Mst.envHostName;
Signiant.Mst.REST = "/REST";
Signiant.Mst.VER = "/v1.0";
Signiant.Mst.INFO_LOG_LEVEL = "INFO";
Signiant.Mst.DEBUG_LOG_LEVEL = "DEBUG";
Signiant.Mst.transferStatsUrl;
Signiant.Mst.trialKeyAgentsList;
Signiant.Mst.minPluginVersion;
Signiant.Mst.transferStartedEvent = 'TRANSFER_STARTED';
Signiant.Mst.connectionStatusEvent = 'TRANSFER_CONNECTION_STATUS';
Signiant.Mst.connectionStatusComponentQueuedEvent = 'TRANSFER_QUEUED';
Signiant.Mst.transferCompletedEvent = 'TRANSFER_COMPLETED';
Signiant.Mst.uploadFilesChosenEvent = 'UPLOAD_FILES_CHOSEN';
Signiant.Mst.downloadFolderChosenEvent = 'DOWNLOAD_FOLDER_CHOSEN';
Signiant.Mst.tooManyFilesChosenEvent = 'UPLOAD_TOO_MANY_FILES_CHOSEN';
Signiant.Mst.uploadFilesProcessedEvent = 'UPLOAD_FILES_PROCESSED';
Signiant.Mst.transferPreFileEvent = 'TRANSFER_PRE_FILE_EVENT';
Signiant.Mst.transferWarnEvent = 'TRANSFER_WARN_EVENT';
Signiant.Mst.transferErrorsEvent = 'TRANSFER_ERROR_EVENT';
Signiant.Mst.transferCanceledEvent = 'TRANSFER_CANCEL_EVENT';
Signiant.Mst.invalidCredentialsCode = 'INVALID_CREDENTIALS';
Signiant.Mst.noFilesForUploadCode = 'SPECIFIED_FILE_DOES_NOT_EXIST';
Signiant.Mst.noFilesForDownloadCode = 'DOWNLOAD_FILES_DO_NOT_EXIST';
Signiant.Mst.noDestinationFolderCode = 'NO_FOLDER_CHOSEN_FOR_DOWNLOAD';
Signiant.Mst.connectionFailureCode = 'CONNECTION_FAILURE';
Signiant.Mst.incompleteUserCredentials = 'INCOMPLETE_USER_CREDENTIALS';
Signiant.Mst.invalidDestinationDirectory = 'INVALID_DESTINATION_DIRECTORY';
Signiant.Mst.preTransferEvent = 'PRE_TRANSFER_EVENT';
Signiant.Mst.transferExceptionEvent = 'TRANSFER_EXCEPTION';
Signiant.Mst.injectedFileEntriesFoundEvent = 'INJECTED_FILES_FOUND_EVENT';
Signiant.Mst.injectedDestDirFoundEvent = 'INJECTED_DESTINATION_DIR_EVENT';
Signiant.Mst.transferStartedEventName = 'cte_plugin_transferStarted';
Signiant.Mst.preTransferEventName = 'cte_plugin_preTransfer';
Signiant.Mst.connectionStatusChangeEventName = 'cte_plugin_connectionStatusChange';
Signiant.Mst.connectionStatusComponentQueuedEventName = 'cte_plugin_connectionStatusComponentQueued';
Signiant.Mst.preFileEventName = 'cte_plugin_preFile';
Signiant.Mst.warnEventName = 'cte_plugin_warn';
Signiant.Mst.transferProgressEventName = 'cte_plugin_transferProgress';
Signiant.Mst.postTransferEventName = 'cte_plugin_postTransfer';
Signiant.Mst.transferFailureEventName = 'cte_plugin_transferFailure';
Signiant.Mst.exceptionEventName = 'cte_plugin_exception';
Signiant.Mst.downloadDestinationChosenEventName = 'cte_plugin_downloadDestinationChosen';
Signiant.Mst.uploadFilesChosenEventName = 'cte_plugin_uploadFilesChosen';
Signiant.Mst.uploadFilesProcessedEventName = 'cte_plugin_uploadFilesProcessed';
Signiant.Mst.tooManyUploadFilesChosenEventName = 'cte_plugin_tooManyUploadFilesChosen';
Signiant.Mst.transferEventList = [Signiant.Mst.transferStartedEventName, Signiant.Mst.preTransferEventName, Signiant.Mst.connectionStatusChangeEventName, Signiant.Mst.connectionStatusComponentQueuedEventName, Signiant.Mst.preFileEventName, Signiant.Mst.warnEventName, Signiant.Mst.transferProgressEventName, Signiant.Mst.postTransferEventName, Signiant.Mst.transferFailureEventName, Signiant.Mst.exceptionEventName, Signiant.Mst.downloadDestinationChosenEventName, Signiant.Mst.uploadFilesChosenEventName, Signiant.Mst.uploadFilesProcessedEventName, Signiant.Mst.tooManyUploadFilesChosenEventName];
Signiant.Mst.filesSelectedCallback;
Signiant.Mst.folderSelectedCallback;
Signiant.Mst.maxNumberFiles = 10000;
Signiant.Mst.isConsoleDefined = false;
oPluginStatus = {
installedVersionFound: false,
installedVersionInfo: {
name: null,
majorVersion: -1,
minorVersion: -1
},
isInstallRequired: false
};
if (window.console) {
if (console.log) {
Signiant.Mst.isConsoleDefined = true;
}
}
Signiant.Mst.getPluginPropName = function () {
return oPluginStatus.installedVersionInfo.name;
};
Signiant.Mst.log = function (text) {
if (Signiant.Mst.isConsoleDefined == true) {
try {
console.log(text);
} catch (e) {}
}
};
Signiant.Mst.trimFileStr = function (str) {
return str.replace(/(\\r\\n|\\n|\\r)/gm, "").replace(/^\s+|\s+$/g, "");
};
Signiant.Mst.validateEventName = function (eventName) {
var index = -1;
for (var i = 0; i < Signiant.Mst.transferEventList.length; i++) {
if (Signiant.Mst.transferEventList[i] === eventName) {
index = i;
break;
}
};
if (index == -1)
throw messagesMap.getMessageForTransport('signiant.transfer.error.nonExistingEvent');
};
Signiant.Mst.validateTransferAgentsList = function (txUrl) {
if (Signiant.Mst.trialKeyAgentsList == undefined) {
return;
} else {
if (txUrl !== undefined && txUrl.length !== 0) {
var txAgentsList = Signiant.Mst.getAgentsFromUrlList(txUrl);
for (var txAgent in txAgentsList) {
var txAgentValid = false;
for (var i = 0; i < Signiant.Mst.trialKeyAgentsList.length; ++i) {
if (txAgent.toLowerCase() === Signiant.Mst.trialKeyAgentsList[i].toLowerCase()) {
txAgentValid = true;
break;
}
}
if (!txAgentValid) {
throw messagesMap.getMessageForTransport('signiant.transfer.error.invalidAgentForTrialKey');
}
}
}
}
};
Signiant.Mst.getAgentsFromUrlList = function (urlList) {
var agents = {};
if (urlList !== undefined && urlList.length !== 0) {
var protocolSpecificAgentsList = urlList.split('\n');
if (protocolSpecificAgentsList !== undefined && protocolSpecificAgentsList.length > 0) {
for (var i = 0; i < protocolSpecificAgentsList.length; ++i) {
var agentsForProtocol = Signiant.Mst.getAgentsFromProtocolList(protocolSpecificAgentsList[i]);
for (var j = 0; j < agentsForProtocol.length; ++j) {
if (!(agentsForProtocol[j] in agents)) {
agents[agentsForProtocol[j]] = true;
}
}
}
}
}
return agents;
};
Signiant.Mst.getAgentsFromProtocolList = function (protocolStringWithAgents) {
var agents = [];
var mxwanStr = 'mxwan://';
var mxtcpStr = 'mxtcp://';
var httpStr = 'http://';
if (protocolStringWithAgents !== undefined && protocolStringWithAgents.length !== 0) {
var agentsInProtocolString = protocolStringWithAgents.split('|');
for (var i = 0; i < agentsInProtocolString.length; ++i) {
var agentString = agentsInProtocolString[i];
var indexOfRelay;
var prefix;
var agentName;
var indexOfColon;
var endIndex;
if (agentString.indexOf(mxwanStr) == 0) {
prefix = mxwanStr;
} else if (agentString.indexOf(mxtcpStr) == 0) {
prefix = mxtcpStr;
} else {
prefix = httpStr;
}
agentString = agentString.substring(prefix.length, agentString.length);
indexOfRelay = agentString.indexOf('@');
indexOfColon = agentString.indexOf(':');
endIndex = (indexOfRelay != -1 ? indexOfRelay : (indexOfColon != -1 ? indexOfColon : agentString.length));
agentName = agentString.substring(0, endIndex);
agents[agents.length] = agentName;
}
}
return agents;
};
Signiant.Mst.Messages = function () {
var messagesMap = {
'signiant.error.jquery.missing': 'Unable to locate jQuery. Aborting.',
'signiant.error.mst.script.apikey.invalid': 'API key does not exist.',
'signiant.error.mst.script.apikey.missing': 'A valid api-key must be specified in the api-key attribute of the <script> tag',
'signiant.error.mst.script.apikey.unknown': 'Could not validate the API key due to an unexpected error',
'signiant.error.mst.script.missing': 'Could not find a <script> tag with id ms-api',
'signiant.error.validateKeyUnknown': 'An unknown error occurred while validating API key.',
'signiant.install.plugin.button': 'Install Plug-in',
'signiant.install.plugin.download.prefix': 'If your download does not start automatically, please ',
'signiant.install.plugin.download.click': 'click here',
'signiant.install.plugin.download.suffix': '.',
'signiant.install.plugin.download.step1.label': '1',
'signiant.install.plugin.download.step1.description': 'Download',
'signiant.install.plugin.download.step2.label': '2',
'signiant.install.plugin.download.step2.description': 'Run',
'signiant.install.plugin.download.step3.label': '3',
'signiant.install.plugin.download.step3.description': 'Use',
'signiant.install.plugin.explanation': 'This plug-in is required to secure and accelerate your Media Shuttle transfers. Click Install Plug-in to start the install/update process.',
'signiant.install.plugin.header': 'Transfer Plug-in',
'signiant.install.plugin.help': 'Help',
'signiant.install.plugin.missing': 'A plug-in needed by Media Shuttle could not be found.',
'signiant.transfer.error.auth': 'Transfer authentication error.',
'signiant.transfer.error.auth.config': 'Transfer authentication error due to an incomplete configuration.',
'signiant.transfer.error.auth.credentials.incomplete': 'Transfer authentication error due to missing credentials.',
'signiant.transfer.error.auth.credentials.invalid': 'Transfer authentication error due to invalid credentials.',
'signiant.transfer.error.auth.ssl.ca': 'Transfer authentication error due to an SSL communication error with the Media Shuttle server.',
'signiant.transfer.error.auth.ssl.ca.config': 'Transfer authentication error due to an SSL configuration error.',
'signiant.transfer.error.auth.ssl.ca.insufficientMemory': 'Transfer authentication error due to an SSL communication error with the Media Shuttle server.',
'signiant.transfer.error.auth.ssl.ca.missing': 'Transfer authentication error due to an SSL configuration error.',
'signiant.transfer.error.auth.ssl.certificateRejected': "Transfer authentication error because the Media Shuttle server's SSL certificate was rejected.",
'signiant.transfer.error.auth.ssl.context': 'Transfer authentication error due to an SSL communication error with the Media Shuttle server.',
'signiant.transfer.error.autoRetry': 'The connection to your Media Shuttle server was lost. Automatically reconnecting in 1 minute.',
'signiant.transfer.error.callbackFailedForConnStatus': 'Failed to call callback for connection status event.',
'signiant.transfer.error.callbackFailedForConnStatusCompQueued': 'Failed to call callback for connection-queued event.',
'signiant.transfer.error.callbackFailedForPostXfer': 'Failed to call callback for post transfer event.',
'signiant.transfer.error.callbackFailedForPreXfer': 'Failed to call callback for pre transfer event.',
'signiant.transfer.error.callbackFailedForTooManyFiles': 'Failed to send callback for too many files chosen while upload.',
'signiant.transfer.error.callbackFailedForXferPrefile': 'Failed to call callback for pre file event.',
'signiant.transfer.error.callbackFailedForXferStart': 'Failed to call callback for transfer started event.',
'signiant.transfer.error.connection.dataChannel': 'Unable to establish a connection to the Media Shuttle server.',
'signiant.transfer.error.connection.hostNotFound': 'Unable to establish a connection to the Media Shuttle server.',
'signiant.transfer.error.connection.insufficientMemory': 'The connection to the Media Shuttle server was lost.',
'signiant.transfer.error.connection.lostHeartBeat': 'The connection to the Media Shuttle server was lost.',
'signiant.transfer.error.connection.readChannel': 'Unable to read any data from the Media Shuttle server.',
'signiant.transfer.error.connection.writeChannel': 'Unable to write any data to the Media Shuttle server.',
'signiant.transfer.error.failedToCancelTransfer': 'Failed to cancel transfer.',
'signiant.transfer.error.failedToProcessUploadFiles': 'Failed to process upload files.',
'signiant.transfer.error.failedToChooseDownloadFolder': 'Failed to choose download folder.',
'signiant.transfer.error.failedToChooseFolder': 'Failed to choose folder.',
'signiant.transfer.error.failedToChooseUploadFiles': 'Failed to choose upload files.',
'signiant.transfer.error.failedToRemoveUploadFiles': 'Failed to choose remove files.',
'signiant.transfer.error.failedToClearFiles': 'Failed to clear specified files.',
'signiant.transfer.error.failedToRemoveFilesFromProperty': 'Failed to remove file from Files property.',
'signiant.transfer.error.failedToClearAllFiles': 'Failed to clear all files.',
'signiant.transfer.error.failedToClearServerList': 'Failed to clear server list.',
'signiant.transfer.error.failedToDownload': 'Failed to start the download.',
'signiant.transfer.error.failedToDownloadAtPlugin': 'Failed to download files.',
'signiant.transfer.error.failedToHandleCallback': 'Failed to handle callback.',
'signiant.transfer.error.failedToHandleErrors': 'Failed to handle errors.',
'signiant.transfer.error.failedToHandleException': 'Failed to handle transfer exception event.',
'signiant.transfer.error.failedToHandleUploadFilesProcessed': 'Failed to handle upload files processed event',
'signiant.transfer.error.failedToCalcSelectedFileSize': 'Failed to perform processing of the selected files to calculate sizes',
'signiant.transfer.error.failedToHandleXferProgress': 'Failed to handle transfer-progress event.',
'signiant.transfer.error.failedToSetDownloadFolder': 'Failed to set chosen download folder.',
'signiant.transfer.error.failedToSetLogLevel': 'Failed to set plug-in log-level.',
'signiant.transfer.error.failedToSetUploadFiles': 'Failed to set chosen upload files.',
'signiant.transfer.error.failedToSubscribeBasicEvents': 'Failed to subscribe basic events.',
'signiant.transfer.error.failedToSubscribeForAdvEvent': 'Failed to subscribe for event: ',
'signiant.transfer.error.failedToSubscribeForEvent': 'Could not subscribe to event as the transfer-plugin could not be found in the DOM:',
'signiant.transfer.error.failedToSubscribeXferErrors': 'Failed to subscribe for transfer-errors event.',
'signiant.transfer.error.failedToSubscribeXferProgress': 'Failed to subscribe for transfer-progress events.',
'signiant.transfer.error.failedToUpload': 'Failed to start the upload.',
'signiant.transfer.error.failedToUploadAtPlugin': 'Failed to upload files.',
'signiant.transfer.error.fallbackToOneStar': 'Unable to connect to your Media Shuttle server using 2 Star service. Connecting using 1 Star service instead.',
'signiant.transfer.error.fallbackToTwoStar': 'Unable to connect to your Media Shuttle server using 3 Star service. Connecting using 2 Star service instead.',
'signiant.transfer.error.invalidLogLevel': 'Supplied plug-in log-level is invalid: ',
'signiant.transfer.error.invalidServer': 'Please specify a valid server.',
'signiant.transfer.error.invalidAgentForTrialKey': 'With unlincensed API keys, you can only perform transfers to/from our cloud-hosted servers.',
'signiant.transfer.error.invalidCallback': 'Please supply a callback method.',
'signiant.transfer.error.invalidDestinationDir': 'Please supply a valid Destination Directory.',
'signiant.transfer.error.invalidListOfFiles': 'Please supply a list of files as an Array.',
'signiant.transfer.error.invalidPassword': 'Please supply a valid Password.',
'signiant.transfer.error.invalidPropertyDelete': 'Please provide a String value for name of the property you wish to delete.',
'signiant.transfer.error.invalidPropertyName': 'Please provide a String value for the name of the property you wish to modify.',
'signiant.transfer.error.invalidPropertyRetrieval': 'Please provide a String value for the name of the property you wish to retrieve.',
'signiant.transfer.error.invalidTransferProperties': 'Please provide transfer properties in the form of a JSON object.',
'signiant.transfer.error.invalidTrustedCA': 'Please supply a valid certificate for the Certificate Authority',
'signiant.transfer.error.invalidUsername': 'Please supply a valid Username.',
'signiant.transfer.error.nonExistingEvent': 'Please supply a valid event name.',
'signiant.transfer.error.invalidFilePathHandlingMode': 'Please supply a valid File Path Handling Mode. The Mode can be either PATH or FULL or FLAT',
'signiant.transfer.error.invalidFileCollisionHandling': 'Please supply a valid File Collision Handling Mode. The Mode can be either overwrite or version ',
'signiant.transfer.error.noTransferToCancel': 'No transfer in progress to cancel.',
'signiant.transfer.error.property.agent.nameTooLong': 'The agent name property is too long.',
'signiant.transfer.error.property.bandwidthThrottle.invalid': 'The bandwidth throttle property setting is invalid.',
'signiant.transfer.error.property.destinationDir.invalid': 'The destination dir property setting is invalid.',
'signiant.transfer.error.property.destinationDir.notFound': 'The destination dir property setting is missing.',
'signiant.transfer.error.property.encryption.unsupported': 'The encryption property setting specifies an unsupported encryption type.',
'signiant.transfer.error.property.file.invalid': 'The file specification property is invalid.',
'signiant.transfer.error.property.file.notFound': 'The file property specifies a file which does not exist on the agent.',
'signiant.transfer.error.property.file.nameTooLong': 'The file property specifies a file with a name which is too long.',
'signiant.transfer.error.property.file.open': 'The file property specifies a file which can not be opened by the agent.',
'signiant.transfer.error.property.file.unsupported': 'The file property specifies a file which can not be transferred because its file type is unsupported.',
'signiant.transfer.error.property.fileCollision.invalid': 'The file collision handling property is invalid.',
'signiant.transfer.error.property.fileList.notFound': 'Unable to find any of the files requested from the Media Shuttle agent.',
'signiant.transfer.error.property.mode.invalid': 'The mode property must be set to send or receive.',
'signiant.transfer.error.property.sandbox.notFound': 'The sandbox directory property setting is invalid.',
'signiant.transfer.error.property.transport.unsupported': 'The transport property setting specifies an unsupported transport type.',
'signiant.transfer.error.property.url.invalid': 'Encountered a URL with an invalid format.',
'signiant.transfer.error.specifyConfigForDownload': 'Please specify configuration properties to perform an download.',
'signiant.transfer.error.specifyConfigForUpload': 'Please specify configuration properties to perform an upload.',
'signiant.transfer.error.specifyFileToDownload': 'Please specify at least one file to download.',
'signiant.transfer.error.specifyFileToUpload': 'Please specify at least one file to add to the list of files to be uploaded.',
'signiant.transfer.error.stream.fileDisposition.unsupported': 'Encountered an unsupported file disposition request.',
'signiant.transfer.error.stream.fileType.unsupported': 'Encountered an unsupported file type.',
'signiant.transfer.error.tooManyFiles': 'The number of files chosen for upload exceeds the maximum number of allowable files.',
'signiant.transfer.error.undefinedFileSelectCallback': 'Callback is not defined for file selector.',
'signiant.transfer.error.undefinedFolderSelectCallback': 'Callback is not defined for folder selector.',
'signiant.transfer.error.undefinedListOfFiles': 'Please supply a valid list of files for the transfer.',
'signiant.transfer.error.undefinedListOfFilesToClear': 'Please supply a valid list of files to clear.',
'signiant.transfer.error.undefinedPropertyDelete': 'Please specify a valid name for the property you wish to delete.',
'signiant.transfer.error.undefinedPropertyName': 'Please specify a valid name for the property you wish to set.',
'signiant.transfer.error.undefinedPropertyRetrieval': 'Please specify a valid name for the property you wish to retrieve.',
'signiant.transfer.error.undefinedPropertyValue': 'Please specify a valid value for property ',
'signiant.transfer.error.undefinedTransferProperties': 'Please specify some properties for the transfer.',
'signiant.transfer.error.unexpectedError': 'Unable to perform transfer. Please verify the supplied transfer properties and selected files.',
'signiant.transfer.error.unexpectedProperties': 'Unable to perform transfer. Please verify the supplied transfer properties.',
'signiant.transfer.error.unexpectedResponse': 'The Media Shuttle server returned an unexpected response during file transfer. Your transfer has been canceled.',
'signiant.transfer.error.unexpectedResponse.fileSequenceNum.notFound': 'The Media Shuttle server returned an unexpected response during file transfer. Your transfer has been canceled.',
'signiant.transfer.error.unexpectedResponse.server.dataType': 'The Media Shuttle server returned an unexpected response during file transfer. Your transfer has been canceled.',
'signiant.transfer.error.injected.file.entries.found': 'Injected file entries detected.',
'signiant.transfer.error.injected.dest.dir.found': 'Injected destination directory detected.',
'signiant.transfer.error.unexpectedResponse.server.malformedData': 'The Media Shuttle server returned an unexpected response during file transfer. Your transfer has been canceled.',
'signiant.transfer.error.jobNamePrefix.invalidJobNamePrefix': 'The specified Job Name Prefix is invalid. Value must be aplha numeric and limited to 32 characters. ',
'signiant.transfer.error.jobNamePrefix.failure': 'Please provide a value for Job Name Prefix.',
'signiant.transfer.error.serviceData.failure': 'Please provide a value for Service Data.',
'signiant.transfer.status.transferStarted': 'Transfer started',
'signiant.transfer.status.preTransfer': 'Pre Transfer',
'signiant.transfer.status.preFile': 'Pre File',
'signiant.transfer.status.connectionStatusComponentQueued': 'Connection Queued',
'signiant.transfer.transferException': 'Exception in transfer',
'signiant.transfer.uploadFilesProcessed': 'Upload Files Processed',
'signiant.transfer.status.connected': 'Connected to server',
'signiant.transfer.status.connecting': 'Connecting to server..',
'signiant.transfer.status.disconnected': 'Disconnected from server',
'signiant.transfer.status.disconnecting': 'Disconnecting from server..',
'signiant.transfer.status.transferFailed': 'Transfer Failed.',
'signiant.transfer.status.transferring': 'Started transferring files..',
'signiant.transfer.status.transferCanceled': 'Transfer Canceled.',
'signiant.transfer.status.transferSuccessful': 'Transfer Successful.',
'signiant.error.detectPlugin.failureAlert': 'Failed to query the latest plug-in version from Media Shuttle'
};
return {
getMessage: function (messageKey) {
return messagesMap[messageKey];
},
setMessages: function (mapJson) {
if (mapJson && mapJson instanceof Object) {
for (var property in messagesMap) {
delete(messagesMap[property]);
}
for (var property in mapJson) {
messagesMap[property] = mapJson[property];
}
}
},
getMessageForTransport: function (transportErrorCode) {
var message = '';
if (transportErrorCode in messagesMap) {
message = this.getMessage(transportErrorCode);
} else if (transportErrorCode == 'AutomaticReconnectionWarningText') {
message = this.getMessage('signiant.transfer.error.autoRetry');
} else if (transportErrorCode == 'ConnectionAbortedException-DATA_CHANNEL_TO_SERVER_FAILURE') {
message = this.getMessage('signiant.transfer.error.connection.dataChannel');
} else if (transportErrorCode == 'ConnectionAbortedException-HOST_NOT_FOUND') {
message = this.getMessage('signiant.transfer.error.connection.hostNotFound');
} else if (transportErrorCode == 'ConnectionAbortedException-INSUFFICIENT_MEMORY_FOR_CTE_SESSION') {
message = this.getMessage('signiant.transfer.error.connection.insufficientMemory');
} else if (transportErrorCode == 'ConnectionAbortedException-LOST_HEART_BEAT') {
message = this.getMessage('signiant.transfer.error.connection.lostHeartBeat');
} else if (transportErrorCode == 'ConnectionAbortedException-READ_CHANNEL_FAILURE') {
message = this.getMessage('signiant.transfer.error.connection.readChannel');
} else if (transportErrorCode == 'ConnectionAbortedException-WRITE_CHANNEL_FAILURE') {
message = this.getMessage('signiant.transfer.error.connection.writeChannel');
} else if (transportErrorCode == 'InvalidAuthenticationException-CERTIFICATE_REJECTED') {
message = this.getMessage('signiant.transfer.error.auth.ssl.certificateRejected');
} else if (transportErrorCode == 'InvalidAuthenticationException-ERROR_BINDING_CA_CERT_TO_SSL_CONTEXT') {
message = this.getMessage('signiant.transfer.error.auth.ssl.ca');
} else if (transportErrorCode == 'InvalidAuthenticationException-ERROR_CREATING_SSL_CONTEXT') {
message = this.getMessage('signiant.transfer.error.auth.ssl.context');
} else if (transportErrorCode == 'InvalidAuthenticationException-ERROR_LOADING_CONFIGURED_CA_CERT') {
message = this.getMessage('signiant.transfer.error.auth.ssl.ca.config');
} else if (transportErrorCode == 'InvalidAuthenticationException-INCOMPLETE_AGENT_OR_PROTOCOL_INFO') {
message = this.getMessage('signiant.transfer.error.auth.config');
} else if (transportErrorCode == 'InvalidAuthenticationException-INCOMPLETE_USER_CREDENTIALS') {
message = this.getMessage('signiant.transfer.error.auth.credentials.incomplete');
} else if (transportErrorCode == 'InvalidAuthenticationException-INSUFFICIENT_MEMORY_TO_LOAD_CA_CERT') {
message = this.getMessage('signiant.transfer.error.auth.ssl.ca.insufficientMemory');
} else if (transportErrorCode == 'InvalidAuthenticationException-INVALID_CREDENTIALS') {
message = this.getMessage('signiant.transfer.error.auth.credentials.invalid');
} else if (transportErrorCode == 'InvalidAuthenticationException-NO_TRUSTED_CA_CERT_CONFIGURED') {
message = this.getMessage('signiant.transfer.error.auth.ssl.ca.missing');
} else if (transportErrorCode == 'PropertyException-AGENT_NAME_TOO_LONG') {
message = this.getMessage('signiant.transfer.error.property.agent.nameTooLong');
} else if (transportErrorCode == 'PropertyException-EMPTY_OR_INVALID_FILE_SPECIFICATION') {
message = this.getMessage('signiant.transfer.error.property.file.invalid');
} else if (transportErrorCode == 'PropertyException-FILE_ENTRY_CANNOT_BE_OPENED') {
message = this.getMessage('signiant.transfer.error.property.file.open');
} else if (transportErrorCode == 'PropertyException-FILE_ENTRY_NOT_FOUND') {
message = this.getMessage('signiant.transfer.error.property.file.notFound');
} else if (transportErrorCode == 'PropertyException-FILE_ENTRY_NOT_REG_FILE_OR_DIR') {
message = this.getMessage('signiant.transfer.error.property.file.unsupported');
} else if (transportErrorCode == 'PropertyException-FILE_NAME_TOO_LONG') {
message = this.getMessage('signiant.transfer.error.property.file.nameTooLong');
} else if (transportErrorCode == 'PropertyException-INVALID_BANDWIDTH_THROTTLE') {
message = this.getMessage('signiant.transfer.error.property.bandwidthThrottle.invalid');
} else if (transportErrorCode == 'PropertyException-INVALID_DESTINATION_DIR') {
message = this.getMessage('signiant.transfer.error.property.destinationDir.invalid');
} else if (transportErrorCode == 'PropertyException-INVALID_FILE_COLLISION_HANDLING_SPECIFICATION') {
message = this.getMessage('signiant.transfer.error.property.fileCollision.invalid');
} else if (transportErrorCode == 'PropertyException-INVALID_MODE_SPECIFICATION') {
message = this.getMessage('signiant.transfer.error.property.mode.invalid');
} else if (transportErrorCode == 'PropertyException-INVALID_URL_IN_LIST') {
message = this.getMessage('signiant.transfer.error.property.url.invalid');
} else if (transportErrorCode == 'PropertyException-NO_DESTINATION_DIR_DEFINED') {
message = this.getMessage('signiant.transfer.error.property.destinationDir.notFound');
} else if (transportErrorCode == 'PropertyException-NO_FILES_TO_DOWNLOAD') {
message = this.getMessage('signiant.transfer.error.property.fileList.notFound');
} else if (transportErrorCode == 'PropertyException-NO_SANDBOX_DEFINED') {
message = this.getMessage('signiant.transfer.error.property.sandbox.notFound');
} else if (transportErrorCode == 'PropertyException-UNSUPPORTED_ENCRYPTION_TYPE') {
message = this.getMessage('signiant.transfer.error.property.encryption.unsupported');
} else if (transportErrorCode == 'PropertyException-UNSUPPORTED_TRANSPORT_TYPE') {
message = this.getMessage('signiant.transfer.error.property.transport.unsupported');
} else if (transportErrorCode == 'StreamException-UNSUPPORTED_FILE_DISPOSITION_REQUEST') {
message = this.getMessage('signiant.transfer.error.stream.fileDisposition.unsupported');
} else if (transportErrorCode == 'StreamException-UNSUPPORTED_FILE_TYPE') {
message = this.getMessage('signiant.transfer.error.stream.fileType.unsupported');
} else if (transportErrorCode == 'TransferFallbackWarningText{threeStarService}{twoStarService}') {
message = this.getMessage('signiant.transfer.error.fallbackToTwoStar');
} else if (transportErrorCode == 'TransferFallbackWarningText{twoStarService}{oneStarService}') {
message = this.getMessage('signiant.transfer.error.fallbackToOneStar');
} else if (transportErrorCode == 'UnexpectedResponseException-FILE_SEQUENCE_NUM_NOT_FOUND') {
message = this.getMessage('signiant.transfer.error.unexpectedResponse.fileSequenceNum.notFound');
} else if (transportErrorCode == 'UnexpectedResponseException-MALFORMED_DATA_FROM_SERVER') {
message = this.getMessage('signiant.transfer.error.unexpectedResponse.server.malformedData');
} else if (transportErrorCode == 'UnexpectedResponseException-UNEXPECTED_DATA_TYPE_FROM_SERVER') {
message = this.getMessage('signiant.transfer.error.unexpectedResponse.server.dataType');
} else if (transportErrorCode == 'PropertyException-INJECTED_FILE_ENTRIES_FOUND') {
message = this.getMessage('signiant.transfer.error.injected.file.entries.found');
} else if (transportErrorCode == 'PropertyException-INJECTED_DEST_DIR_FOUND') {
message = this.getMessage('signiant.transfer.error.injected.dest.dir.found');
}
return message;
}
};
};
var messagesMap = new Signiant.Mst.Messages();
Signiant.Mst.validateKeyErrorMessage = messagesMap.getMessage('signiant.error.validateKeyUnknown');
Signiant.Mst.Transfer = function () {
Signiant.Mst.Transfer.usernamePropName = 'com.signiant.interactivetransfer.engine.user';
Signiant.Mst.Transfer.passwordPropName = 'com.signiant.interactivetransfer.engine.password';
Signiant.Mst.Transfer.caCertPropName = 'com.signiant.interactivetransfer.engine.ca_certificate';
Signiant.Mst.Transfer.certValidatePropName = 'com.signiant.interactivetransfer.engine.certificatevalidate';
Signiant.Mst.Transfer.encryptPropName = 'com.signiant.interactivetransfer.engine.encrypt';
Signiant.Mst.Transfer.restartsPropName = 'com.signiant.interactivetransfer.engine.restarts';
Signiant.Mst.Transfer.aggressivePropName = 'com.signiant.interactivetransfer.engine.udp.aggressive';
Signiant.Mst.Transfer.followSymLinksPropName = 'com.signiant.interactivetransfer.engine.follow_symlinks';
Signiant.Mst.Transfer.modePropName = 'com.signiant.interactivetransfer.engine.mode';
Signiant.Mst.Transfer.urlListPropName = 'com.signiant.interactivetransfer.engine.url_list';
Signiant.Mst.Transfer.filesPropName = 'com.signiant.interactivetransfer.engine.files';
Signiant.Mst.Transfer.destinationPropName = 'com.signiant.interactivetransfer.engine.destination_dir';
Signiant.Mst.Transfer.streamsPropName = 'com.signiant.interactivetransfer.engine.streams';
Signiant.Mst.Transfer.packageidPropName = 'com.signiant.interactivetransfer.engine.header.packageid';
Signiant.Mst.Transfer.filePathHandlingModePropName = 'com.signiant.interactivetransfer.engine.dir_handling_mode';
Signiant.Mst.Transfer.fileCollisionHandlingPropName = 'com.signiant.interactivetransfer.engine.file_collision_handling';
Signiant.Mst.Transfer.jobNamePrefixPropName = 'com.signiant.interactivetransfer.engine.header.jobnameprefix';
Signiant.Mst.Transfer.serviceDataPropName = 'com.signiant.interactivetransfer.engine.service_data';
Signiant.Mst.Transfer.loggingPropName = 'com.signiant.interactivetransfer.engine.logging';
Signiant.Mst.Transfer.jobNamePrefix = 'MediaShuttleAPI_';
Signiant.Mst.Transfer.filePathModeFlat = "FLAT";
Signiant.Mst.Transfer.filePathModePath = "PATH";
Signiant.Mst.Transfer.filePathModeFull = "FULL";
Signiant.Mst.Transfer.fileCollisionModeVersion = "version";
Signiant.Mst.Transfer.fileCollisionModeOverwrite = "overwrite";
Signiant.Mst.Transfer.mxwanStr = 'mxwan://';
Signiant.Mst.Transfer.mxtcpStr = 'mxtcp://';
Signiant.Mst.Transfer.httpStr = 'http://';
Signiant.Mst.Transfer.httpPortStr = ':8080';
Signiant.Mst.Transfer.defaultTcpUdpPortStr = ':49221';
var transfer = {};
transfer.id = RFC4122_uuid();
transfer.plugin = new Signiant.Mst.Plugin(transfer.id);
transfer.transferProperties = {};
transfer.basicEventsSubscribedCallback;
transfer.progressEventsCallback;
transfer.transferErrorsEventsCallback;
transfer.transferInProgress = false;
transfer.advancedEventCallbacksMap = {};
transfer.lastTransferError;
transfer.logLevel = "INFO";
transfer.eventSubscriptionMap = {};
transfer.getTransferId = function () {
return transfer.id;
};
transfer.subscribeForPluginEvent = function (name, func) {
var eventFlag = transfer.eventSubscriptionMap[name];
if (eventFlag == null || eventFlag == undefined || eventFlag != true) {
transfer.eventSubscriptionMap[name] = true;
transfer.plugin.subscribeForEvent(name, func);
}
};
transfer.setProperty = function (name, value) {
if (name == undefined) {
throw messagesMap.getMessageForTransport('signiant.transfer.error.undefinedPropertyName');
}
if (value == undefined) {
throw messagesMap.getMessageForTransport('signiant.transfer.error.undefinedPropertyValue') + name + ".";
}
if (typeof name != "string") {
throw messagesMap.getMessageForTransport('signiant.transfer.error.invalidPropertyName');
}
transfer.transferProperties[name] = value;
};
transfer.getProperty = function (name) {
if (name == undefined) {
throw messagesMap.getMessageForTransport('signiant.transfer.error.undefinedPropertyRetrieval');
}
if (typeof name != "string") {
throw messagesMap.getMessageForTransport('signiant.transfer.error.invalidPropertyRetrieval');
}
return transfer.transferProperties[name];
};
transfer.deleteProperty = function (name) {
if (name == undefined) {
throw messagesMap.getMessageForTransport('signiant.transfer.error.undefinedPropertyDelete');
}
if (typeof name != "string") {
throw messagesMap.getMessageForTransport('signiant.transfer.error.invalidPropertyDelete');
}
if (transfer.transferProperties[name]) {
delete transfer.transferProperties[name];
}
};
transfer.setTransferProperties = function (jsonProperties) {
if (jsonProperties == undefined) {
throw messagesMap.getMessageForTransport('signiant.transfer.error.undefinedTransferProperties');
}
if (typeof jsonProperties != "object") {
throw messagesMap.getMessageForTransport('signiant.transfer.error.invalidTransferProperties');
}
transfer.transferProperties = jsonProperties;
Signiant.Mst.log('New transfer properties: ' + JSON.stringify(transfer.transferProperties) + ' for transfer with ID: ' + transfer.getTransferId());
};
transfer.getTransferProperties = function () {
return transfer.transferProperties;
};
transfer.resetTransferProperties = function () {
transfer.transferProperties = {};
};
transfer.setTrustedCA = function (trustedCACert) {
if (trustedCACert == undefined) {
throw messagesMap.getMessageForTransport('signiant.transfer.error.invalidTrustedCA');
} else {
trustedCACert = $.trim(trustedCACert);
if (trustedCACert.length == 0) {
throw messagesMap.getMessageForTransport('signiant.transfer.error.invalidTrustedCA');
}
}
trustedCACert = transfer.formatTrustedCACert(trustedCACert);
transfer.setProperty(Signiant.Mst.Transfer.caCertPropName, trustedCACert);
Signiant.Mst.log('Set-Trusted-CA: New CA certificate: ' + transfer.getProperty(Signiant.Mst.Transfer.caCertPropName) + ' for transfer with ID: ' + transfer.getTransferId());
};
transfer.getTrustedCA = function () {
return transfer.getProperty(Signiant.Mst.Transfer.caCertPropName);
};
transfer.formatTrustedCACert = function (trustedCACertRaw) {
Signiant.Mst.log("Formatting supplied CA certificate: " + trustedCACertRaw);
var pemHeader = "-----BEGIN CERTIFICATE-----";
var pemFooter = "-----END CERTIFICATE-----";
var pemCharsPerLine = 64;
var lineFeed = "\n";
var trustedCACert = "";
if (trustedCACertRaw == undefined) {
throw messagesMap.getMessageForTransport('signiant.transfer.error.invalidTrustedCA');
} else {
trustedCACertRaw = $.trim(trustedCACertRaw);
if (trustedCACertRaw.length == 0) {
throw messagesMap.getMessageForTransport('signiant.transfer.error.invalidTrustedCA');
}
}
var indexOfPemHeader = trustedCACertRaw.indexOf(pemHeader, 0);
if (indexOfPemHeader != 0) {
Signiant.Mst.log("Supplied CA certificate is missing the PEM header!");
throw messagesMap.getMessageForTransport('signiant.transfer.error.invalidTrustedCA');
} else {
var indexOfPemFooter = trustedCACertRaw.indexOf(pemFooter, 0);
if (indexOfPemFooter <= 0 || (indexOfPemFooter < (trustedCACertRaw.length - pemFooter.length))) {
Signiant.Mst.log("Supplied CA certificate is missing the PEM footer or the footer is in the wrong place!");
throw messagesMap.getMessageForTransport('signiant.transfer.error.invalidTrustedCA');
} else {
trustedCACertRaw = trustedCACertRaw.substring(pemHeader.length, (trustedCACertRaw.length - pemFooter.length));
trustedCACert += pemHeader + lineFeed;
var numBase64CharsInCurrLine = 0;
for (var i = 0; i < trustedCACertRaw.length; ++i) {
var certChar = trustedCACertRaw.charAt(i);
if (isBase64Char(certChar)) {
trustedCACert += certChar;
numBase64CharsInCurrLine++;
}
if (numBase64CharsInCurrLine != 0 && (numBase64CharsInCurrLine % pemCharsPerLine) == 0) {
trustedCACert += lineFeed;
numBase64CharsInCurrLine = 0;
}
}
trustedCACert += lineFeed;
trustedCACert += pemFooter;
}
}
return trustedCACert;
};
transfer.setServer = function (server, serverRelayArr) {
var mxwanProtocolStr = '';
var mxtcpProtocolStr = '';
var httpProtocolStr = '';
if (server == undefined || server == '') {
throw messagesMap.getMessageForTransport('signiant.transfer.error.invalidServer');
}
var serverProtocolList = transfer.getServer();
if (serverProtocolList != undefined) {
var serverUrlArray = serverProtocolList.split("\n");
if (serverRelayArr == undefined || serverRelayArr == '') {
if (serverProtocolList.indexOf(server) !== -1) {
return;
}
for (var i = 0; i < serverUrlArray.length; i++) {
if (serverUrlArray[i].indexOf(Signiant.Mst.Transfer.mxwanStr) !== -1)
mxwanProtocolStr = serverUrlArray[i] + "|" + Signiant.Mst.Transfer.mxwanStr + server;
if (serverUrlArray[i].indexOf(Signiant.Mst.Transfer.mxtcpStr) !== -1)
mxtcpProtocolStr = serverUrlArray[i] + "|" + Signiant.Mst.Transfer.mxtcpStr + server;
if (serverUrlArray[i].indexOf(Signiant.Mst.Transfer.httpStr) !== -1)
httpProtocolStr = serverUrlArray[i] + "|" + Signiant.Mst.Transfer.httpStr + server + Signiant.Mst.Transfer.httpPortStr;
}
} else {
for (var i = 0; i < serverUrlArray.length; i++) {
if (serverUrlArray[i].indexOf(Signiant.Mst.Transfer.mxwanStr) !== -1) {
serverProtocol = transfer.generateServerProtocolStr(server, serverRelayArr, Signiant.Mst.Transfer.mxwanStr, Signiant.Mst.Transfer.defaultTcpUdpPortStr);
if (!transfer.doesRelayExistInServerList(serverUrlArray[i], serverProtocol)) {
mxwanProtocolStr = serverUrlArray[i] + "|" + serverProtocol;
} else {
return;
}
}
if (serverUrlArray[i].indexOf(Signiant.Mst.Transfer.mxtcpStr) !== -1) {
serverProtocol = transfer.generateServerProtocolStr(server, serverRelayArr, Signiant.Mst.Transfer.mxtcpStr, Signiant.Mst.Transfer.defaultTcpUdpPortStr);
if (!transfer.doesRelayExistInServerList(serverUrlArray[i], serverProtocol)) {
mxtcpProtocolStr = serverUrlArray[i] + "|" + serverProtocol;
} else {
return;
}
}
if (serverUrlArray[i].indexOf(Signiant.Mst.Transfer.httpStr) !== -1) {
serverProtocol = transfer.generateServerProtocolStr(server, serverRelayArr, Signiant.Mst.Transfer.httpStr, Signiant.Mst.Transfer.httpPortStr);
if (!transfer.doesRelayExistInServerList(serverUrlArray[i], serverProtocol)) {
httpProtocolStr = serverUrlArray[i] + "|" + serverProtocol;
} else {
return;
}
}
}
}
} else {
if (serverRelayArr == undefined || serverRelayArr == '') {
mxwanProtocolStr = Signiant.Mst.Transfer.mxwanStr + server;
mxtcpProtocolStr = Signiant.Mst.Transfer.mxtcpStr + server;
httpProtocolStr = Signiant.Mst.Transfer.httpStr + server + Signiant.Mst.Transfer.httpPortStr;
} else {
mxwanProtocolStr = transfer.generateServerProtocolStr(server, serverRelayArr, Signiant.Mst.Transfer.mxwanStr, Signiant.Mst.Transfer.defaultTcpUdpPortStr);
mxtcpProtocolStr = transfer.generateServerProtocolStr(server, serverRelayArr, Signiant.Mst.Transfer.mxtcpStr, Signiant.Mst.Transfer.defaultTcpUdpPortStr);
httpProtocolStr = transfer.generateServerProtocolStr(server, serverRelayArr, Signiant.Mst.Transfer.httpStr, Signiant.Mst.Transfer.httpPortStr);
}
}
serverProtocolList = mxwanProtocolStr + '\n' + mxtcpProtocolStr + '\n' + httpProtocolStr;
transfer.setProperty(Signiant.Mst.Transfer.urlListPropName, serverProtocolList);
Signiant.Mst.log('Set-Server: ' + transfer.getProperty(Signiant.Mst.Transfer.urlListPropName) + ' for transfer with ID: ' + transfer.getTransferId());
};
transfer.getServer = function () {
return transfer.getProperty(Signiant.Mst.Transfer.urlListPropName);
};
transfer.generateServerProtocolStr = function (server, serverRelayArr, protocolStr, portStr) {
var serverProtocolStr = '';
var endOfLineCounter = 1;
arrLength = serverRelayArr.length;
for (var i = 0; i < arrLength; i++) {
serverRelay = '@' + serverRelayArr[i] + portStr;
serverProtocolStr += protocolStr + server + serverRelay;
if (endOfLineCounter != arrLength)
serverProtocolStr += '|';
endOfLineCounter++;
}
return serverProtocolStr;
};
transfer.doesRelayExistInServerList = function (existingServerRelays, newServerRelay) {
if (existingServerRelays.indexOf(newServerRelay) !== -1)
return true;
};
transfer.clearServerList = function () {
try {
transfer.deleteProperty(Signiant.Mst.Transfer.urlListPropName);
} catch (e) {
Signiant.Mst.log('Clear-Server-List: Failed to clear server list with transfer ID: ' + transfer.getTransferId());
Signiant.Mst.log(e);
throw messagesMap.getMessageForTransport('signiant.transfer.error.failedToClearServerList');
}
};
transfer.setCredentials = function (username, password) {
if (username == undefined) {
throw messagesMap.getMessageForTransport('signiant.transfer.error.invalidUsername');
}
if (password == undefined) {
throw messagesMap.getMessageForTransport('signiant.transfer.error.invalidPassword');
}
transfer.setProperty(Signiant.Mst.Transfer.usernamePropName, username);
transfer.setProperty(Signiant.Mst.Transfer.passwordPropName, password);
Signiant.Mst.log('Set-Credentials: Supplied username: ' + username + ';Set username: ' + transfer.getProperty(Signiant.Mst.Transfer.usernamePropName) + ' for transfer with ID: ' + transfer.getTransferId());
};
transfer.setDestinationDir = function (destinationDir) {
if (destinationDir == undefined || destinationDir.length == 0) {
throw messagesMap.getMessageForTransport('signiant.transfer.error.invalidDestinationDir');
}
transfer.setProperty(Signiant.Mst.Transfer.destinationPropName, destinationDir);
Signiant.Mst.log('Set-Destination-Dir: New destination directory: ' + transfer.getProperty(Signiant.Mst.Transfer.destinationPropName) + ' for transfer with ID: ' + transfer.getTransferId());
};
transfer.getDestinationDir = function () {
return transfer.getProperty(Signiant.Mst.Transfer.destinationPropName);
};
transfer.setLogLevel = function (level) {
var validNewPluginLogLevel = transfer.setPluginLogLevel(level);
var newTransferLogLevel = "fine";
if ("INFO" === validNewPluginLogLevel.toUpperCase()) {
newTransferLogLevel = "fine";
} else if ("DEBUG" === validNewPluginLogLevel.toUpperCase()) {
newTransferLogLevel = "finest";
}
transfer.logLevel = validNewPluginLogLevel;
transfer.setProperty(Signiant.Mst.Transfer.loggingPropName, newTransferLogLevel);
};
transfer.setPluginLogLevel = function (level) {
var validNewLogLevel = transfer.plugin.setLogLevel(level);
if (!validNewLogLevel || validNewLogLevel == null || validNewLogLevel.length == 0) {
var exceptionMsg = messagesMap.getMessageForTransport('signiant.transfer.error.invalidLogLevel');
exceptionMsg += level;
throw exceptionMsg;
}
return validNewLogLevel;
};
transfer.getLogLevel = function () {
return transfer.logLevel;
};
transfer.setFiles = function (fileNameArray) {
if (fileNameArray == undefined || fileNameArray.length == 0) {
throw messagesMap.getMessageForTransport('signiant.transfer.error.undefinedListOfFiles');
}
if (!fileNameArray.push) {
throw messagesMap.getMessageForTransport('signiant.transfer.error.invalidListOfFiles');
}
var currentFiles = transfer.getProperty(Signiant.Mst.Transfer.filesPropName);
var currentFilesArray = [];
var newFilesArray = [];
if (currentFiles == undefined) {
currentFiles = '';
} else {
currentFilesArray = currentFiles.split('\n');
}
var fileExists = false;
for (var i = 0; i < fileNameArray.length; ++i, fileExists = false) {
fileNameArray[i] = Signiant.Mst.trimFileStr(fileNameArray[i]);
for (var j = 0; j < currentFilesArray.length; ++j) {
if (fileNameArray[i] == currentFilesArray[j]) {
fileExists = true;
break;
}
}
if (fileExists == false) {
newFilesArray.push(fileNameArray[i]);
}
}
for (var k = 0; k < newFilesArray.length; ++k) {
if (currentFiles.length == 0) {
currentFiles += newFilesArray[k];
} else {
currentFiles += ('\n' + newFilesArray[k]);
}
}
transfer.setProperty(Signiant.Mst.Transfer.filesPropName, currentFiles);
};
transfer.getFiles = function () {
var files = transfer.getProperty(Signiant.Mst.Transfer.filesPropName);
var filesArray = [];
if (files != undefined)
filesArray = files.split('\n');
return filesArray;
};
transfer.removeFromFilesProperty = function (fileArray) {
try {
for (var k = 0; k < fileArray.length; k++) {
var array = transfer.getFiles();
var index = -1;
for (var i = 0, j = array.length; i < j; i++) {
if (array[i] === fileArray[k]) {
index = i;
break;
}
};
if (index != -1) {
array.splice(index, 1);
transfer.deleteFilesProperty();
if (array.length != 0) {
transfer.setFiles(array);
}
Signiant.Mst.log('Selected file (' + fileArray[k] + ') has been cleared from the file list for transfer with ID: ' + transfer.getTransferId());
} else {
Signiant.Mst.log('Selected file (' + fileArray[k] + ') to clear was not in the file list for transfer with ID: ' + transfer.getTransferId());
}
}
} catch (e) {
Signiant.Mst.log('Remove-From-Files-Property: Failed to remove specifed files from Files property with transfer ID: ' + transfer.getTransferId());
Signiant.Mst.log(e);
throw messagesMap.getMessageForTransport('signiant.transfer.error.failedToRemoveFilesFromProperty');
}
};
transfer.deleteFilesProperty = function () {
transfer.deleteProperty(Signiant.Mst.Transfer.filesPropName);
};
transfer.clearAllFiles = function () {};
transfer.clearFiles = function (filesArray) {};
transfer.retry = function () {};
transfer.isInProgress = function () {
return transfer.transferInProgress;
};
transfer.cancel = function () {
try {
if (transfer.isInProgress()) {
transfer.plugin.cancelTransfer();
Signiant.Mst.log("Transfer canceled for transfer ID: " + transfer.getTransferId());
return;
}
} catch (e) {
Signiant.Mst.log(e);
throw messagesMap.getMessageForTransport('signiant.transfer.error.failedToCancelTransfer');
}
throw messagesMap.getMessageForTransport('signiant.transfer.error.noTransferToCancel');
};
transfer.setJobNamePrefix = function (value) {
if (value == undefined || value.length == 0) {
throw messagesMap.getMessageForTransport('signiant.transfer.error.jobNamePrefix.failure');
}
if (value.match(/^[a-zA-Z0-9_]{1,32}$/)) {
transfer.setProperty(Signiant.Mst.Transfer.jobNamePrefixPropName, value);
Signiant.Mst.log('Set-JobName-Prefix : New Job Name Prefix : ' + transfer.getProperty(Signiant.Mst.Transfer.jobNamePrefixPropName) + ' for transfer with ID: ' + transfer.getTransferId());
} else {
Signiant.Mst.log('Failed to set the Job Name Prefix');
throw messagesMap.getMessage('signiant.transfer.error.jobNamePrefix.invalidJobNamePrefix');
}
};
transfer.setServiceData = function (value) {
if (value == undefined || value.length == 0) {
throw messagesMap.getMessageForTransport('signiant.transfer.error.serviceData.failure');
}
transfer.setProperty(Signiant.Mst.Transfer.serviceDataPropName, value);
Signiant.Mst.log('Set-Service-Data : New Service Data : ' + transfer.getProperty(Signiant.Mst.Transfer.serviceDataPropName) + ' for transfer with ID: ' + transfer.getTransferId());
};
transfer.getServiceData = function () {
return transfer.getProperty(Signiant.Mst.Transfer.serviceDataPropName);
};
transfer.subscribeForPluginEvents = function () {
transfer.subscribeForPluginEvent(Signiant.Mst.transferStartedEventName, transfer.handleTransferStartedEvent);
transfer.subscribeForPluginEvent(Signiant.Mst.preTransferEventName, transfer.handlePreTransfer);
transfer.subscribeForPluginEvent(Signiant.Mst.connectionStatusChangeEventName, transfer.handleConnectionStatusChange);
transfer.subscribeForPluginEvent(Signiant.Mst.connectionStatusComponentQueuedEventName, transfer.handleConnectionStatusComponentQueued);
transfer.subscribeForPluginEvent(Signiant.Mst.preFileEventName, transfer.handlePreFileEvent);
transfer.subscribeForPluginEvent(Signiant.Mst.warnEventName, transfer.handleTransferErrors);
transfer.subscribeForPluginEvent(Signiant.Mst.transferProgressEventName, transfer.handleTransferProgress);
transfer.subscribeForPluginEvent(Signiant.Mst.postTransferEventName, transfer.handlePostTransferEvent);
transfer.subscribeForPluginEvent(Signiant.Mst.transferFailureEventName, transfer.handleTransferFailure);
transfer.subscribeForPluginEvent(Signiant.Mst.exceptionEventName, transfer.handleTransferException);
transfer.subscribeForPluginEvent(Signiant.Mst.downloadDestinationChosenEventName, transfer.handleDownloadFolderChosen);
transfer.subscribeForPluginEvent(Signiant.Mst.uploadFilesChosenEventName, transfer.handleUploadFilesChosen);
transfer.subscribeForPluginEvent(Signiant.Mst.uploadFilesProcessedEventName, transfer.handleUploadFilesProcessed);
transfer.subscribeForPluginEvent(Signiant.Mst.tooManyUploadFilesChosenEventName, transfer.handleTooManyFilesChosen);
};
transfer.handleTransferStartedEvent = function () {
Signiant.Mst.log('plugin_transferStarted event is fired for transfer with ID: ' + transfer.getTransferId());
try {
if (transfer.basicEventsSubscribedCallback != undefined) {
transfer.basicEventsSubscribedCallback(transfer, Signiant.Mst.transferStartedEvent, messagesMap.getMessageForTransport('signiant.transfer.status.transferStarted'));
}
if (transfer.advancedEventCallbacksMap[Signiant.Mst.transferStartedEventName]) {
transfer.advancedEventCallbacksMap[Signiant.Mst.transferStartedEventName](transfer);
}
} catch (e) {
Signiant.Mst.log('Handle-Transfer-Started-Event: Failed to call callback for transfer-started event for transfer with ID: ' + transfer.getTransferId());
Signiant.Mst.log(e);
throw messagesMap.getMessageForTransport('signiant.transfer.error.callbackFailedForXferStart');
}
transfer.transferInProgress = true;
};
transfer.handlePreTransfer = function (protocolName) {
Signiant.Mst.log('plugin_preTransferevent event is fired for transfer with ID: ' + transfer.getTransferId() + ' ProtocolName: ' + protocolName);
try {
if (transfer.basicEventsSubscribedCallback != undefined) {
transfer.basicEventsSubscribedCallback(transfer, Signiant.Mst.preTransferEvent, messagesMap.getMessageForTransport('signiant.transfer.status.preTransfer'), protocolName);
}
if (transfer.advancedEventCallbacksMap[Signiant.Mst.preTransferEventName]) {
transfer.advancedEventCallbacksMap[Signiant.Mst.preTransferEventName](transfer, protocolName);
}
} catch (e) {
Signiant.Mst.log('Handle-Pre-Transfer-Event: Failed to call callback for pre-transfer event for transfer with ID: ' + transfer.getTransferId());
Signiant.Mst.log(e);
throw messagesMap.getMessageForTransport('signiant.transfer.error.callbackFailedForPreXfer');
}
};
transfer.handleConnectionStatusChange = function (status) {
Signiant.Mst.log('plugin_connectionStatusChange event is fired for transfer with ID: ' + transfer.getTransferId() + ' Status: ' + status);
var message = '';
if (status == 'CONNECTING') {
Signiant.Mst.connectionStatusEvent = 'CONNECTING';
message = messagesMap.getMessageForTransport('signiant.transfer.status.connecting');
} else if (status == 'CONNECTED') {
Signiant.Mst.connectionStatusEvent = 'CONNECTED';
message = messagesMap.getMessageForTransport('signiant.transfer.status.connected');
} else if (status == 'TRANSFERRING') {
Signiant.Mst.connectionStatusEvent = 'TRANSFERRING';
message = messagesMap.getMessageForTransport('signiant.transfer.status.transferring');
} else if (status == 'DISCONNECTING') {
Signiant.Mst.connectionStatusEvent = 'DISCONNECTING';
message = messagesMap.getMessageForTransport('signiant.transfer.status.disconnecting');
} else if (status == 'DISCONNECTED') {
Signiant.Mst.connectionStatusEvent = 'DISCONNECTED';
message = messagesMap.getMessageForTransport('signiant.transfer.status.disconnected');
} else if (status == 'COMPONENT_QUEUED') {
Signiant.Mst.connectionStatusEvent = 'CONNECTION_QUEUED';
message = messagesMap.getMessageForTransport('signiant.transfer.status.connectionStatusComponentQueued');
}
try {
if (transfer.basicEventsSubscribedCallback != undefined) {
transfer.basicEventsSubscribedCallback(transfer, Signiant.Mst.connectionStatusEvent, message);
}
if (transfer.advancedEventCallbacksMap[Signiant.Mst.connectionStatusChangeEventName]) {
transfer.advancedEventCallbacksMap[Signiant.Mst.connectionStatusChangeEventName](transfer, status);
}
} catch (e) {
Signiant.Mst.log('Handle-Connection-Status-Event: Failed to call callback for connection-status event for transfer with ID: ' + transfer.getTransferId());
Signiant.Mst.log(e);
throw messagesMap.getMessageForTransport('signiant.transfer.error.callbackFailedForConnStatus');
}
};
transfer.handleConnectionStatusComponentQueued = function (etaTime) {
Signiant.Mst.log('plugin_connectionStatusComponentQueued event is fired for transfer with ID: ' + transfer.getTransferId() + ', EtaTime: ' + etaTime);
try {
if (transfer.basicEventsSubscribedCallback != undefined) {
transfer.basicEventsSubscribedCallback(transfer, Signiant.Mst.connectionStatusComponentQueuedEvent, messagesMap.getMessageForTransport('signiant.transfer.status.connectionStatusComponentQueued'), etaTime);
}
if (transfer.advancedEventCallbacksMap[Signiant.Mst.connectionStatusComponentQueuedEventName]) {
transfer.advancedEventCallbacksMap[Signiant.Mst.connectionStatusComponentQueuedEventName](transfer, etaTime);
}
} catch (e) {
Signiant.Mst.log('Handle-Connection-Status-Component-Queued-Event: Failed to call callback for connection-status-component-queued event for transfer with ID: ' + transfer.getTransferId());
Signiant.Mst.log(e);
throw messagesMap.getMessageForTransport('signiant.transfer.error.callbackFailedForConnStatusCompQueued');
}
};
transfer.handlePreFileEvent = function (fileName) {
Signiant.Mst.log('plugin_preFile event is fired for transfer with ID: ' + transfer.getTransferId() + ' FileName: ' + fileName);
try {
if (transfer.basicEventsSubscribedCallback != undefined) {
transfer.basicEventsSubscribedCallback(transfer, Signiant.Mst.transferPreFileEvent, messagesMap.getMessageForTransport('signiant.transfer.status.preFile'), fileName);
}
if (transfer.advancedEventCallbacksMap[Signiant.Mst.preFileEventName]) {
transfer.advancedEventCallbacksMap[Signiant.Mst.preFileEventName](transfer, fileName);
}
} catch (e) {
Signiant.Mst.log('Handle-Pre-File-Event: Failed to call callback for pre-file event for transfer with ID: ' + transfer.getTransferId());
Signiant.Mst.log(e);
throw messagesMap.getMessageForTransport('signiant.transfer.error.callbackFailedForXferPrefile');
}
};
transfer.handleTransferErrors = function (pluginErrorCode, shortMessage, propertyName) {
Signiant.Mst.log('plugin_warn event is fired for transfer with ID: ' + transfer.getTransferId() + ' Message: ' + pluginErrorCode + ' shortMessage: ' + shortMessage + ' propertyName:' + propertyName);
try {
var errorMessage = messagesMap.getMessageForTransport(pluginErrorCode);
Signiant.Mst.log('ErrorMessage: ' + errorMessage);
transfer.lastTransferError = pluginErrorCode;
if (transfer.transferErrorsEventsCallback != undefined) {
if (pluginErrorCode.match(/^((?!PropertyException-INJECTED_(FILE_ENTRIES|DEST_DIR)_FOUND).)*$/)) {
var errorCode = transfer.getExternalErrorCode(pluginErrorCode);
transfer.transferErrorsEventsCallback(transfer, errorCode, errorMessage, propertyName);
}
}
if (transfer.advancedEventCallbacksMap[Signiant.Mst.warnEventName]) {
transfer.advancedEventCallbacksMap[Signiant.Mst.warnEventName](transfer, pluginErrorCode, shortMessage, propertyName);
}
if (pluginErrorCode == 'PropertyException-INJECTED_FILE_ENTRIES_FOUND') {
if (transfer.basicEventsSubscribedCallback != undefined) {
transfer.basicEventsSubscribedCallback(transfer, Signiant.Mst.injectedFileEntriesFoundEvent, messagesMap.getMessageForTransport(pluginErrorCode));
}
} else if (pluginErrorCode == 'PropertyException-INJECTED_DEST_DIR_FOUND') {
if (transfer.basicEventsSubscribedCallback != undefined) {
transfer.basicEventsSubscribedCallback(transfer, Signiant.Mst.injectedDestDirFoundEvent, messagesMap.getMessageForTransport(pluginErrorCode));
}
}
} catch (e) {
Signiant.Mst.log('Handle-Transfer-Errors: Failed to handle errors for transfer with ID: ' + transfer.getTransferId());
Signiant.Mst.log(e);
throw messagesMap.getMessageForTransport('signiant.transfer.error.failedToHandleErrors');
}
};
transfer.getLastError = function () {
if (transfer.lastTransferError == undefined) {
transfer.lastTransferError = "";
}
return transfer.lastTransferError;
};
transfer.resetLastError = function () {
transfer.lastTransferError = "";
};
transfer.getExternalErrorCode = function (pluginErrorCode) {
if (pluginErrorCode == 'InvalidAuthenticationException-INCOMPLETE_USER_CREDENTIALS') {
return Signiant.Mst.incompleteUserCredentials;
} else if (pluginErrorCode == 'PropertyException-FILE_ENTRY_NOT_FOUND') {
return Signiant.Mst.noFilesForUploadCode;
} else if (pluginErrorCode == 'PropertyException-NO_FILES_TO_DOWNLOAD') {
return Signiant.Mst.noFilesForDownloadCode;
} else if (pluginErrorCode == 'PropertyException-NO_DESTINATION_DIR_DEFINED') {
return Signiant.Mst.noDestinationFolderCode;
} else if (pluginErrorCode == 'ConnectionAbortedException-READ_CHANNEL_FAILURE') {
return Signiant.Mst.connectionFailureCode;
} else if (pluginErrorCode == 'InvalidAuthenticationException-INVALID_CREDENTIALS') {
return Signiant.Mst.invalidCredentialsCode;
} else if (pluginErrorCode == 'PropertyException-INVALID_DESTINATION_DIR') {
return Signiant.Mst.invalidDestinationDirectory;
} else {
return Signiant.Mst.transferErrorsEvent;
}
};
transfer.handleTransferProgress = function (bytesSent, totalBytes, estimatedTimeRemaining, formattedRate, rawTransferRate) {
try {
Signiant.Mst.log('plugin_transferProgress event is fired for transfer with ID: ' + transfer.getTransferId() + '. ' + bytesSent + ' (bytes sent), ' +
totalBytes + ' (total bytes), ' + estimatedTimeRemaining + ' (time remaining), ' +
formattedRate + ' (rate)');
if (transfer.progressEventsCallback != undefined) {
transfer.progressEventsCallback(transfer, bytesSent, totalBytes, estimatedTimeRemaining);
}
if (transfer.advancedEventCallbacksMap[Signiant.Mst.transferProgressEventName]) {
transfer.advancedEventCallbacksMap[Signiant.Mst.transferProgressEventName](transfer, bytesSent, totalBytes, estimatedTimeRemaining, formattedRate, rawTransferRate);
}
} catch (e) {
Signiant.Mst.log('Handle Transfer Progress: Failed to handle transfer-progress event for transfer with ID: ' + transfer.getTransferId());
Signiant.Mst.log(e);
throw messagesMap.getMessageForTransport('signiant.transfer.error.failedToHandleXferProgress');
}
};
transfer.handlePostTransferEvent = function (status, destination, sandbox, transferSize, logfile, fileNamePairsAfterCollisionJSONArr) {
Signiant.Mst.log('plugin_postTransfer event is fired for transfer with ID: ' + transfer.getTransferId() + '. Status: ' + status);
try {
if (transfer.basicEventsSubscribedCallback != undefined) {
if (status == 'FAILURE') {
transfer.basicEventsSubscribedCallback(transfer, Signiant.Mst.transferErrorsEvent, messagesMap.getMessageForTransport('signiant.transfer.status.transferFailed'));
} else if (status == 'CANCELLED') {
transfer.basicEventsSubscribedCallback(transfer, Signiant.Mst.transferCanceledEvent, messagesMap.getMessageForTransport('signiant.transfer.status.transferCanceled'));
} else {
transfer.basicEventsSubscribedCallback(transfer, Signiant.Mst.transferCompletedEvent, messagesMap.getMessageForTransport('signiant.transfer.status.transferSuccessful'));
}
}
if (transfer.advancedEventCallbacksMap[Signiant.Mst.postTransferEventName]) {
transfer.advancedEventCallbacksMap[Signiant.Mst.postTransferEventName](transfer, status, destination, sandbox, transferSize, logfile, fileNamePairsAfterCollisionJSONArr);
}
} catch (e) {
Signiant.Mst.log('Handle-Post-Transfer-Event: Failed to call callback for post-transfer event for transfer with ID: ' + transfer.getTransferId());
Signiant.Mst.log(e);
throw messagesMap.getMessageForTransport('signiant.transfer.error.callbackFailedForPostXfer');
}
transfer.reportTransferStatistics();
transfer.transferInProgress = false;
};
transfer.reportTransferStatistics = function () {
Signiant.Mst.log('Reporting statistics for transfer: ' + transfer.getTransferId());
try {
var statsString = transfer.plugin.getTransferStats();
var statsJSON = JSON.parse(statsString);
statsJSON['apiKey'] = Signiant.Mst.apiKey;
statsString = JSON.stringify(statsJSON);
if ('withCredentials' in new XMLHttpRequest()) {
transfer.reportTransferStatisticsForNonIE8_9_Browsers(statsString);
} else {
transfer.reportTransferStatisticsForIE8_9_Browsers(statsString);
}
} catch (e) {
Signiant.Mst.log('Failed to report the statistics for transfer: ' + transfer.getTransferId() + " because of " + e);
}
};
transfer.reportTransferStatisticsForIE8_9_Browsers = function (statsString) {
var url = Signiant.Mst.transferStatsUrl;
url = adjustCORSURLProtocolForIE8_9_Browsers(url);
if (isHttpProtocol()) {
var xdr = new XDomainRequest();
xdr.open("POST", url);
xdr.onload = function () {
Signiant.Mst.log('Successfully reported transfer statistics.');
};
xdr.onprogress = function () {};
xdr.ontimeout = function () {};
xdr.onerror = function () {
Signiant.Mst.log('Failed to report transfer statistics.');
};
setTimeout(function () {
xdr.send(statsString);
}, 0);
} else {
var xhrForPlugin;
try {
xhrForPlugin = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
xhrForPlugin = false;
}
if (xhrForPlugin) {
xhrForPlugin.onreadystatechange = function () {
if (xhrForPlugin.readyState == 4) {
if (xhrForPlugin.status == '200' && xhrForPlugin.statusText == 'OK') {
Signiant.Mst.log('Successfully reported transfer statistics.');
} else {
Signiant.Mst.log('Failed to report transfer statistics.');
}
}
};
xhrForPlugin.open("POST", url);
xhrForPlugin.setRequestHeader("Content-Type", "application/json");
xhrForPlugin.send(statsString);
} else {
Signiant.Mst.log('Failed to report transfer statistics.');
return;
}
}
};
transfer.reportTransferStatisticsForNonIE8_9_Browsers = function (statsString) {
jQuery.support.cors = true;
var xhr = getNewXMLHttpRequest();
xhr.onerror = transfer.handleReportTransferStatisticsFailure;
xhr.onreadystatechange = function () {
if (xhr.readyState == 4) {
if (xhr.status == '200' && xhr.statusText == 'OK') {
transfer.handleReportTransferStatisticsSuccess(JSON.parse(xhr.responseText), "SUCCESS", xhr);
} else {
transfer.handleReportTransferStatisticsFailure(xhr);
}
}
};
xhr.open("POST", Signiant.Mst.transferStatsUrl, true);
xhr.send(statsString);
};
transfer.handleReportTransferStatisticsSuccess = function (response, status, jqXHR) {
Signiant.Mst.log('Successfully reported transfer statistics.');
};
transfer.handleReportTransferStatisticsFailure = function (jqXHR) {
Signiant.Mst.log('Failed to report transfer statistics.');
};
transfer.handleTransferFailure = function () {
Signiant.Mst.log('plugin_transferFailure event is fired for transfer with ID: ' + transfer.getTransferId());
try {
if (transfer.transferErrorsEventsCallback != undefined) {
transfer.transferErrorsEventsCallback(transfer, Signiant.Mst.transferErrorsEvent, messagesMap.getMessageForTransport('signiant.transfer.status.transferFailed'));
}
if (transfer.advancedEventCallbacksMap[Signiant.Mst.transferFailureEventName]) {
transfer.advancedEventCallbacksMap[Signiant.Mst.transferFailureEventName](transfer);
}
} catch (e) {
Signiant.Mst.log('Handle-Transfer-Failure: Failed to handle transfer errors event for transfer with ID: ' + transfer.getTransferId());
Signiant.Mst.log(e);
throw messagesMap.getMessageForTransport('signiant.transfer.error.failedToHandleErrors');
}
};
transfer.handleTransferException = function (message) {
Signiant.Mst.log("plugin_exception: " + message);
try {
if (transfer.basicEventsSubscribedCallback != undefined) {
transfer.basicEventsSubscribedCallback(transfer, Signiant.Mst.transferExceptionEvent, messagesMap.getMessage('signiant.transfer.transferException'), message);
}
if (transfer.advancedEventCallbacksMap[Signiant.Mst.exceptionEventName]) {
transfer.advancedEventCallbacksMap[Signiant.Mst.exceptionEventName](transfer, message);
}
} catch (e) {
Signiant.Mst.log('Handle-Transfer-Exception: Failed to handle transfer exception event for transfer with ID: ' + transfer.getTransferId());
Signiant.Mst.log(e);
throw messagesMap.getMessageForTransport('signiant.transfer.error.failedToHandleException');
}
};
transfer.handleDownloadFolderChosen = function (folder) {}, transfer.handleUploadFilesChosen = function (filesJSON) {}, transfer.handleUploadFilesProcessed = function (files) {
Signiant.Mst.log('plugin_uploadFilesProcessed event is fired for transfer with ID: ' + transfer.getTransferId() + ' .Files: ' + files);
try {
if (files.length > 0 && files != "[]") {
Signiant.Mst.log('Transfer - uploadFilesProcessed : ' + files + ' for transfer with ID: ' + transfer.getTransferId());
}
if (transfer.advancedEventCallbacksMap[Signiant.Mst.uploadFilesProcessedEventName]) {
transfer.advancedEventCallbacksMap[Signiant.Mst.uploadFilesProcessedEventName](transfer, files);
}
} catch (e) {
Signiant.Mst.log('Handle-Transfer-Failure: Failed to handle errors for transfer with ID: ' + transfer.getTransferId());
Signiant.Mst.log(e);
throw messagesMap.getMessageForTransport('signiant.transfer.error.failedToHandleUploadFilesProcessed');
}
};
transfer.handleTooManyFilesChosen = function () {}, transfer.subscribeForBasicEvents = function (callback) {
try {
transfer.basicEventsSubscribedCallback = callback;
} catch (e) {
Signiant.Mst.log('Subscribe-Basic-Events: Failed to subscribe basic events for transfer with ID: ' + transfer.getTransferId());
Signiant.Mst.log(e);
throw messagesMap.getMessageForTransport('signiant.transfer.error.failedToSubscribeBasicEvents');
}
};
transfer.subscribeForTransferProgress = function (callback) {
try {
transfer.progressEventsCallback = callback;
Signiant.Mst.log('Subscribe-For-Transfer-Progress: Subscribed function for transfer-progress events for transfer with ID: ' +
transfer.getTransferId());
} catch (e) {
Signiant.Mst.log('Transfer Progress: Failed to subscribe the caller for transfer-progress events for transfer with ID: ' + transfer.getTransferId());
Signiant.Mst.log(e);
throw messagesMap.getMessageForTransport('signiant.transfer.error.failedToSubscribeXferProgress');
}
};
transfer.subscribeForTransferErrors = function (callback) {
try {
transfer.transferErrorsEventsCallback = callback;
Signiant.Mst.log('Subscribe-For-Transfer-Errors: Subscribed function for transfer-errors events for transfer with ID ' +
transfer.getTransferId());
} catch (e) {
Signiant.Mst.log('Subscribe-Transfer-Errors: Failed to subscribe the caller for transfer-errors event for transfer with ID: ' + transfer.getTransferId());
Signiant.Mst.log(e);
throw messagesMap.getMessageForTransport('signiant.transfer.error.failedToSubscribeXferErrors');
}
};
transfer.subscribeForAdvancedEvents = function (eventName, callback) {
if (callback == undefined)
throw messagesMap.getMessageForTransport('signiant.transfer.error.invalidCallback');
Signiant.Mst.validateEventName(eventName);
try {
transfer.advancedEventCallbacksMap[eventName] = callback;
} catch (e) {
Signiant.Mst.log('Subscribe-Advanced-Events: Failed to subscribe for advanced-events for transfer with ID: ' + transfer.getTransferId());
Signiant.Mst.log(e);
throw messagesMap.getMessageForTransport('signiant.transfer.error.failedToSubscribeForAdvEvent' + eventName);
}
};
transfer.isIEProtectedModeOn = function () {
return transfer.plugin.isIEProtectedModeOn();
};
transfer.setDefaults = function () {
transfer.setProperty(Signiant.Mst.Transfer.certValidatePropName, 'true');
transfer.setProperty(Signiant.Mst.Transfer.encryptPropName, 'STRONG');
transfer.setProperty(Signiant.Mst.Transfer.restartsPropName, '4');
transfer.setProperty(Signiant.Mst.Transfer.aggressivePropName, '2');
transfer.setProperty(Signiant.Mst.Transfer.followSymLinksPropName, 'true');
transfer.setProperty(Signiant.Mst.Transfer.streamsPropName, '4');
transfer.setProperty(Signiant.Mst.Transfer.fileCollisionHandlingPropName, Signiant.Mst.Transfer.fileCollisionModeVersion);
transfer.setProperty(Signiant.Mst.Transfer.jobNamePrefixPropName, Signiant.Mst.Transfer.jobNamePrefix);
transfer.setLogLevel("INFO");
};
transfer.setDefaults();
return transfer;
};
Signiant.Mst.Upload = function () {
var transfer = new Signiant.Mst.Transfer();
transfer.filesSelectedCallback;
transfer.startUpload = function () {
try {
transfer.resetLastError();
if (Signiant.Mst.isValidAPIKey && Signiant.Mst.isPluginInstalled) {
transfer.transferProperties[Signiant.Mst.Transfer.modePropName] = 'SEND';
transfer.subscribeForPluginEvents();
transfer.plugin.setMaxUploadFiles(Signiant.Mst.maxNumberFiles);
transfer.plugin.uploadFiles(transfer.getTransferProperties());
} else {
throw Signiant.Mst.validateKeyErrorMessage;
}
} catch (e) {
Signiant.Mst.log('Start-Upload: Failed to start upload with transfer ID: ' + transfer.getTransferId());
Signiant.Mst.log(e);
throw messagesMap.getMessageForTransport('signiant.transfer.error.failedToUpload');
}
};
transfer.calcSelectedFileSize = function () {
try {
transfer.subscribeForPluginEvent(Signiant.Mst.uploadFilesProcessedEventName, transfer.handleUploadFilesProcessed);
transfer.plugin.processUploadFiles();
} catch (e) {
Signiant.Mst.log('Calc-Selected-File-Size: Failed to perform processing of the selected files to calculate sizes with transfer with ID: ' + transfer.getTransferId());
Signiant.Mst.log(e);
throw messagesMap.getMessageForTransport('signiant.transfer.error.failedToCalcSelectedFileSize');
}
};
transfer.setFilesToUpload = function (fileNameArray) {
if (fileNameArray == undefined || fileNameArray.length == 0) {
throw messagesMap.getMessageForTransport('signiant.transfer.error.specifyFileToUpload');
}
transfer.setFiles(fileNameArray);
Signiant.Mst.log('Set-Files-To-Upload: New file list for upload: ' + transfer.getProperty(Signiant.Mst.Transfer.filesPropName) + ' with transfer ID: ' + transfer.getTransferId());
};
transfer.clearFiles = function (filesArray) {
if (filesArray == undefined || filesArray.length == 0) {
throw messagesMap.getMessageForTransport('signiant.transfer.error.undefinedListOfFilesToClear');
}
if (!filesArray.push) {
throw messagesMap.getMessageForTransport('signiant.transfer.error.invalidListOfFiles');
}
try {
transfer.removeFromFilesProperty(filesArray);
transfer.plugin.removeUploadFiles(filesArray);
} catch (e) {
Signiant.Mst.log('Clear-Files: Failed to clear specified files with transfer ID: ' + transfer.getTransferId());
Signiant.Mst.log(e);
throw messagesMap.getMessageForTransport('signiant.transfer.error.failedToClearFiles');
}
};
transfer.clearAllFiles = function () {
try {
transfer.deleteFilesProperty();
transfer.plugin.clearUploadFiles();
} catch (e) {
Signiant.Mst.log('Clear-All-Files: Failed to clear all files with transfer ID: ' + transfer.getTransferId());
Signiant.Mst.log(e);
throw messagesMap.getMessageForTransport('signiant.transfer.error.failedToClearAllFiles');
}
};
transfer.chooseUploadFiles = function (callback) {
if (callback != undefined) {
try {
transfer.filesSelectedCallback = callback;
transfer.subscribeForPluginEvent(Signiant.Mst.uploadFilesChosenEventName, transfer.handleUploadFilesChosen);
transfer.subscribeForPluginEvent(Signiant.Mst.tooManyUploadFilesChosenEventName, transfer.handleTooManyFilesChosen);
transfer.plugin.setMaxUploadFiles(Signiant.Mst.maxNumberFiles);
transfer.plugin.chooseUploadFiles();
} catch (e) {
Signiant.Mst.log('Choose-Upload-Files: Failed to choose upload file with transfer ID: ' + transfer.getTransferId());
Signiant.Mst.log(e);
throw messagesMap.getMessageForTransport('signiant.transfer.error.failedToChooseUploadFiles');
}
} else {
throw messagesMap.getMessageForTransport('signiant.transfer.error.undefinedFileSelectCallback');
}
};
transfer.handleUploadFilesChosen = function (files) {
try {
if (files.length > 0 && files != "[]") {
Signiant.Mst.log('Transfer - uploadFilesChosen : ' + files + ' for transfer with ID: ' + transfer.getTransferId());
if (transfer.filesSelectedCallback != undefined) {
transfer.filesSelectedCallback(Signiant.Mst.uploadFilesChosenEvent, JSON.parse(files), transfer);
}
if (transfer.advancedEventCallbacksMap[Signiant.Mst.uploadFilesChosenEventName]) {
transfer.advancedEventCallbacksMap[Signiant.Mst.uploadFilesChosenEventName](transfer, files);
}
}
} catch (e) {
Signiant.Mst.log('Upload-Files-Chosen: Failed to set chosen upload files with transfer ID: ' + transfer.getTransferId());
Signiant.Mst.log(e);
throw messagesMap.getMessageForTransport('signiant.transfer.error.failedToSetUploadFiles');
}
};
transfer.handleTooManyFilesChosen = function () {
try {
if (transfer.filesSelectedCallback != undefined) {
transfer.filesSelectedCallback(Signiant.Mst.tooManyFilesChosenEvent, {}, transfer);
}
if (transfer.advancedEventCallbacksMap[Signiant.Mst.tooManyUploadFilesChosenEventName]) {
transfer.advancedEventCallbacksMap[Signiant.Mst.tooManyUploadFilesChosenEventName](transfer);
}
} catch (e) {
Signiant.Mst.log('Upload-Too-Many-Files-Chosen: Failed to send callback for too many files chosen to upload with transfer ID: ' + transfer.getTransferId());
Signiant.Mst.log(e);
throw messagesMap.getMessageForTransport('signiant.transfer.error.callbackFailedForTooManyFiles');
}
};
return transfer;
};
Signiant.Mst.Download = function () {
var transfer = new Signiant.Mst.Transfer();
transfer.downloadFolderSelectedCallback;
transfer.startDownload = function () {
try {
transfer.resetLastError();
if (Signiant.Mst.isValidAPIKey && Signiant.Mst.isPluginInstalled) {
transfer.transferProperties[Signiant.Mst.Transfer.modePropName] = 'RECEIVE';
transfer.subscribeForPluginEvents();
transfer.plugin.setMaxUploadFiles(Signiant.Mst.maxNumberFiles);
transfer.plugin.downloadFiles(transfer.getTransferProperties());
} else {
throw Signiant.Mst.validateKeyErrorMessage;
}
} catch (e) {
Signiant.Mst.log('Start-Download: Failed to start download with transfer ID: ' + transfer.getTransferId());
Signiant.Mst.log(e);
throw messagesMap.getMessageForTransport('signiant.transfer.error.failedToDownload');
}
};
transfer.setFilesToDownload = function (fileNameArray) {
if (fileNameArray == undefined || fileNameArray.length == 0) {
throw messagesMap.getMessageForTransport('signiant.transfer.error.specifyFileToDownload');
}
transfer.setFiles(fileNameArray);
Signiant.Mst.log('Set-Files-To-Download: New file list for download: ' + transfer.getProperty(Signiant.Mst.Transfer.filesPropName) + ' with transfer ID: ' + transfer.getTransferId());
};
transfer.setDownloadFolder = function (folder) {
transfer.setDestinationDir(folder);
};
transfer.clearAllFiles = function () {
try {
transfer.deleteFilesProperty();
} catch (e) {
Signiant.Mst.log('Clear-All-Files: Failed to clear all files with transfer ID: ' + transfer.getTransferId());
Signiant.Mst.log(e);
throw messagesMap.getMessageForTransport('signiant.transfer.error.failedToClearAllFiles');
}
};
transfer.clearFiles = function (filesArray) {
if (filesArray == undefined || filesArray.length == 0) {
throw messagesMap.getMessageForTransport('signiant.transfer.error.undefinedListOfFilesToClear');
}
if (!filesArray.push) {
throw messagesMap.getMessageForTransport('signiant.transfer.error.invalidListOfFiles');
}
try {
transfer.removeFromFilesProperty(filesArray);
} catch (e) {
Signiant.Mst.log('Clear-Files: Failed to clear specified files with transfer ID: ' + transfer.getTransferId());
Signiant.Mst.log(e);
throw messagesMap.getMessageForTransport('signiant.transfer.error.failedToClearFiles');
}
};
transfer.chooseDownloadFolder = function (callback) {
if (callback != undefined) {
try {
transfer.downloadFolderSelectedCallback = callback;
transfer.subscribeForPluginEvent(Signiant.Mst.downloadDestinationChosenEventName, transfer.handleDownloadFolderChosen);
transfer.plugin.setMaxUploadFiles(Signiant.Mst.maxNumberFiles);
transfer.plugin.chooseDownloadFolder();
} catch (e) {
Signiant.Mst.log('Choose-Download-Folder: Failed to choose folder for transfer with ID: ' + transfer.getTransferId());
Signiant.Mst.log(e);
throw messagesMap.getMessageForTransport('signiant.transfer.error.failedToChooseFolder');
}
} else {
throw messagesMap.getMessageForTransport('signiant.transfer.error.undefinedFolderSelectCallback');
}
};
transfer.handleDownloadFolderChosen = function (folder) {
try {
if (folder != "" && transfer.downloadFolderSelectedCallback != undefined) {
Signiant.Mst.log('Transfer - downloadFolderChosen : ' + folder + ' for transfer with ID: ' + transfer.getTransferId());
transfer.downloadFolderSelectedCallback(Signiant.Mst.downloadFolderChosenEvent, folder, transfer);
}
if (transfer.advancedEventCallbacksMap[Signiant.Mst.downloadDestinationChosenEventName]) {
transfer.advancedEventCallbacksMap[Signiant.Mst.downloadDestinationChosenEventName](transfer, folder);
}
} catch (e) {
Signiant.Mst.log('Download-Folder-Chosen: Failed to set chosen download folder for transfer with ID: ' + transfer.getTransferId());
Signiant.Mst.log(e);
throw messagesMap.getMessageForTransport('signiant.transfer.error.failedToSetDownloadFolder');
}
};
transfer.setFilePathHandlingMode = function (mode) {
if (mode == undefined || mode.length == 0) {
throw messagesMap.getMessageForTransport('signiant.transfer.error.invalidFilePathHandlingMode');
}
if (mode != Signiant.Mst.Transfer.filePathModeFlat && mode != Signiant.Mst.Transfer.filePathModePath && mode != Signiant.Mst.Transfer.filePathModeFull) {
throw messagesMap.getMessageForTransport('signiant.transfer.error.invalidFilePathHandlingMode');
}
transfer.setProperty(Signiant.Mst.Transfer.filePathHandlingModePropName, mode);
Signiant.Mst.log('Set-Dir-Handling-Mode: New Mode: ' + transfer.getProperty(Signiant.Mst.Transfer.filePathHandlingModePropName) + ' for transfer with ID: ' + transfer.getTransferId());
};
transfer.getFilePathHandlingMode = function () {
return transfer.getProperty(Signiant.Mst.Transfer.filePathHandlingModePropName);
};
transfer.setFileCollisionHandlingMode = function (mode) {
if (mode == undefined || mode.length == 0) {
throw messagesMap.getMessageForTransport('signiant.transfer.error.invalidFileCollisionHandling');
}
if (mode != Signiant.Mst.Transfer.fileCollisionModeVersion && mode != Signiant.Mst.Transfer.fileCollisionModeOverwrite) {
throw messagesMap.getMessageForTransport('signiant.transfer.error.invalidFileCollisionHandling');
}
transfer.setProperty(Signiant.Mst.Transfer.fileCollisionHandlingPropName, mode);
Signiant.Mst.log('Set-File-Collision-Handling: New Value: ' + transfer.getProperty(Signiant.Mst.Transfer.fileCollisionHandlingPropName) + ' for transfer with ID: ' + transfer.getTransferId());
};
transfer.getFileCollisionHandlingMode = function () {
return transfer.getProperty(Signiant.Mst.Transfer.fileCollisionHandlingPropName);
};
return transfer;
};
Signiant.Mst.Plugin = function (transferId) {
var pluginRef = {};
pluginRef.transferId = transferId;
pluginRef.pluginParentDivId = 'transfer-' + pluginRef.transferId;
pluginRef.pluginDOMId = Signiant.Mst.getPluginPropName() + "-" + pluginRef.transferId;
embedPlugin(pluginRef.pluginParentDivId, pluginRef.pluginDOMId, oPluginStatus.installedVersionInfo.majorVersion, oPluginStatus.installedVersionInfo.minorVersion, null, null, null);
pluginRef.getPluginDOM = function () {
var pluginDOMRef = document.getElementById(pluginRef.pluginDOMId);
if (pluginDOMRef == undefined || pluginDOMRef == null) {
embedPlugin(pluginRef.pluginParentDivId, pluginRef.pluginDOMId, oPluginStatus.installedVersionInfo.majorVersion, oPluginStatus.installedVersionInfo.minorVersion, null, null, null);
pluginDOMRef = document.getElementById(pluginRef.pluginDOMId);
}
return pluginDOMRef;
};
pluginRef.setLogLevel = function (logLevel) {
try {
if (logLevel && logLevel.length > 0) {
var logLevelUpperCase = logLevel.toUpperCase();
if ("INFO" === logLevelUpperCase || "DEBUG" === logLevelUpperCase) {
pluginRef.getPluginDOM().setPluginLogLevel(logLevelUpperCase);
Signiant.Mst.log("Plugin-Set-Log-Level: Successfully set log-level to: " + logLevelUpperCase);
return logLevelUpperCase;
}
}
} catch (e) {
Signiant.Mst.log("Failed to set plug-in log-level to: " + logLevel);
Signiant.Mst.log(e);
throw messagesMap.getMessageForTransport('signiant.transfer.error.failedToSetLogLevel');
}
};
pluginRef.getTransferStats = function () {
var pluginDOMRef = pluginRef.getPluginDOM();
var stats = pluginDOMRef.getTransferStats();
return stats;
};
pluginRef.subscribeForEvent = function (name, func) {
var pluginDOM = pluginRef.getPluginDOM();
if (pluginDOM != undefined) {
if (window.addEventListener && navigator.appName != 'Microsoft Internet Explorer') {
pluginDOM.addEventListener(name, func, false);
} else {
pluginDOM.attachEvent("on" + name, func);
}
} else {
throw messagesMap.getMessageForTransport('signiant.transfer.error.failedToSubscribeForEvent') + name;
}
};
pluginRef.chooseUploadFiles = function () {
try {
pluginRef.getPluginDOM().chooseUploadFiles();
} catch (e) {
Signiant.Mst.log('Plugin-Choose-Upload-Files: Failed to choose upload files.');
Signiant.Mst.log(e);
throw messagesMap.getMessageForTransport('signiant.transfer.error.failedToChooseUploadFiles');
}
};
pluginRef.chooseDownloadFolder = function (callback) {
try {
pluginRef.getPluginDOM().chooseDownloadDestination();
} catch (e) {
Signiant.Mst.log('Plugin-Choose-Download-Folder: Failed to choose download folder.');
Signiant.Mst.log(e);
throw messagesMap.getMessageForTransport('signiant.transfer.error.failedToChooseDownloadFolder');
}
};
pluginRef.clearUploadFiles = function () {
try {
pluginRef.getPluginDOM().clearUploadFiles();
} catch (e) {
Signiant.Mst.log('Plugin-Clear-Upload-Files: Failed to clear upload files.');
Signiant.Mst.log(e);
throw messagesMap.getMessageForTransport('signiant.transfer.error.failedToChooseUploadFiles');
}
};
pluginRef.removeUploadFiles = function (fileArr) {
try {
pluginRef.getPluginDOM().removeUploadFiles(fileArr);
} catch (e) {
Signiant.Mst.log('Plugin-Clear-Upload-Files: Failed to remove upload files.');
Signiant.Mst.log(e);
throw messagesMap.getMessageForTransport('signiant.transfer.error.failedToRemoveUploadFiles');
}
};
pluginRef.uploadFiles = function (config) {
if (config == undefined) {
throw messagesMap.getMessageForTransport('signiant.transfer.error.specifyConfigForUpload');
}
try {
Signiant.Mst.log("uploadFiles : Call to plugin to upload");
Signiant.Mst.validateTransferAgentsList(config[Signiant.Mst.Transfer.urlListPropName]);
pluginRef.getPluginDOM().uploadFiles(JSON.stringify(config));
} catch (e) {
Signiant.Mst.log("Plugin-Upload-Files: Failed to upload files.");
Signiant.Mst.log(e);
throw messagesMap.getMessageForTransport('signiant.transfer.error.failedToUploadAtPlugin');
}
};
pluginRef.downloadFiles = function (config) {
if (config == undefined) {
throw messagesMap.getMessageForTransport('signiant.transfer.error.specifyConfigForDownload');
}
try {
Signiant.Mst.log("downloadFiles : Call to plugin to download");
Signiant.Mst.validateTransferAgentsList(config[Signiant.Mst.Transfer.urlListPropName]);
pluginRef.getPluginDOM().downloadFiles(JSON.stringify(config));
} catch (e) {
Signiant.Mst.log(e);
throw messagesMap.getMessageForTransport('signiant.transfer.error.failedToDownloadAtPlugin');
}
};
pluginRef.setMaxUploadFiles = function (numFiles) {
pluginRef.getPluginDOM().setMaxUploadFiles(numFiles);
Signiant.Mst.log("Set the maximum number of files that can be uploaded to " + numFiles);
};
pluginRef.cancelTransfer = function () {
try {
pluginRef.getPluginDOM().cancelTransfer();
} catch (e) {
throw messagesMap.getMessageForTransport('signiant.transfer.error.failedToCancelTransfer');
}
};
pluginRef.processUploadFiles = function () {
try {
pluginRef.getPluginDOM().processUploadFiles();
} catch (e) {
throw messagesMap.getMessageForTransport('signiant.transfer.error.failedToProcessUploadFiles');
}
};
pluginRef.isIEProtectedModeOn = function () {
return pluginRef.getPluginDOM().isIEProtectedModeOn() == "true" ? true : false;
};
return pluginRef;
};
Signiant.Mst.Version = function (majorVersion, minorVersion) {
var version = {};
version.majorVersion = Number(majorVersion);
version.minorVersion = Number(minorVersion);
version.decrement = function () {
version.majorVersion = (version.minorVersion == 0 ? (version.majorVersion == 0 ? 0 : (version.majorVersion - 1)) : version.majorVersion);
version.minorVersion = (version.minorVersion == 0 ? 9 : (version.minorVersion - 1));
};
version.greaterThan = function (otherVersion) {
return (version.majorVersion > otherVersion.majorVersion) || (version.majorVersion == otherVersion.majorVersion && version.minorVersion > otherVersion.minorVersion);
};
version.equals = function (otherVersion) {
return (version.majorVersion == otherVersion.majorVersion && version.minorVersion == otherVersion.minorVersion);
};
version.greaterThanOrEquals = function (otherVersion) {
return version.equals(otherVersion) || version.greaterThan(otherVersion);
};
return version;
};
Signiant.Mst.FireBreath = function () {
var fireBreath = {};
fireBreath.pluginDefs = {};
fireBreath.registerPlugin = function (plugin) {
fireBreath.pluginDefs[plugin.name] = {
"name": plugin.name,
"mimeType": plugin.mimeType,
"activeXName": plugin.activeXName,
"installURL": plugin.installURL
};
};
fireBreath.injectPlugin = function (pluginName, dest, id, width, height, callback, params) {
var info = fireBreath.pluginDefs[pluginName];
if (typeof (params) == "undefined") {
params = {};
}
__pluginCB = callback;
params["onload"] = "__pluginCB";
var html = '<object id="' + id + '" type="' + info.mimeType + '" width="' + width + '" height="' + height + '">';
for (paramName in params) {
html += '<param name="' + paramName + '" value="' + params[paramName] + '" />';
}
html += '</object>';
dest.innerHTML = html;
};
fireBreath.isPluginInstalled = function (pluginName, minReqVersionInfo, latestVersionInfo) {
var minReqVersion = new Signiant.Mst.Version(minReqVersionInfo.majorVersion, minReqVersionInfo.minorVersion);
var latestVersion = new Signiant.Mst.Version(latestVersionInfo.majorVersion, latestVersionInfo.minorVersion);
var latestMajorVerDotZero = new Signiant.Mst.Version(latestVersionInfo.majorVersion, 0);
var testVersion = latestVersion;
var suitablePluginFound = false;
while (testVersion.greaterThanOrEquals(minReqVersion) && testVersion.greaterThanOrEquals(latestMajorVerDotZero)) {
if (fireBreath.isPluginVersionInstalled(pluginName, testVersion)) {
suitablePluginFound = true;
oPluginStatus.installedVersionInfo = {
name: pluginName,
majorVersion: testVersion.majorVersion,
minorVersion: testVersion.minorVersion
};
break;
}
testVersion.decrement();
}
return suitablePluginFound;
};
fireBreath.isPluginVersionInstalled = function (pluginName, pluginVersion) {
var ie = window.ActiveXObject;
var npapi = navigator.plugins;
if (ie) {
return fireBreath._isIEPluginInstalled(pluginName, pluginVersion);
} else if (npapi) {
return fireBreath._isNpapiPluginInstalled(pluginName, pluginVersion);
} else {
throw 'Cannot determine if plug-in is installed because browser is unsupported!';
}
};
fireBreath._isIEPluginInstalled = function (pluginName, pluginVersion) {
var fullAXOName = 'SigniantInc.' + pluginName + '-v' + pluginVersion.majorVersion + '.' + pluginVersion.minorVersion;
var pluginInstalled = false;
try {
new ActiveXObject(fullAXOName);
pluginInstalled = true;
} catch (e) {}
return pluginInstalled;
};
fireBreath._isNpapiPluginInstalled = function (pluginName, pluginVersion) {
var fullPluginName = pluginName + ' v' + pluginVersion.majorVersion + '.' + pluginVersion.minorVersion;
var plugins = navigator.plugins;
var pluginInstalled = false;
for (var i = 0; i < plugins.length; i++) {
var foundPluginName = plugins[i].name;
if (fullPluginName == foundPluginName) {
pluginInstalled = true;
break;
}
}
return pluginInstalled;
};
return fireBreath;
};
Signiant.Mst.firebreathRef = new Signiant.Mst.FireBreath();
function isBase64Char(candidateChar) {
var isBase64 = false;
if (candidateChar !== undefined && candidateChar.length == 1) {
var charAsciiCode = candidateChar.charCodeAt(0);
if (charAsciiCode == 43 || charAsciiCode == 47 || charAsciiCode == 61 || (charAsciiCode >= 48 && charAsciiCode <= 57) || (charAsciiCode >= 65 && charAsciiCode <= 90) || (charAsciiCode >= 97 && charAsciiCode <= 122)) {
isBase64 = true;
}
}
return isBase64;
};
function getNewXMLHttpRequest() {
return new XMLHttpRequest();
};
function Xor128(x, y, z, w) {
this.x = (x ? x >>> 0 : 123456789);
this.y = (y ? y >>> 0 : 362436069);
this.z = (z ? z >>> 0 : 521288629);
this.w = (w ? w >>> 0 : 88675123);
};
function Xor128_init() {
return new Xor128(new Date().getTime());
};
Xor128.init = Xor128_init;
function next() {
var me = this,
x = me.x,
w = me.w,
t = x ^ (x << 11);
me.x = me.y = me.z = w;
return me.w = (w ^ (w >> 19)) ^ (t ^ (t >> 8));
};
Xor128.prototype.next = next;
function make(cnt) {
var i = 0,
result = [];
for (; i < cnt; ++i) {
result[i] = this.next();
}
return result;
};
Xor128.prototype.make = make;
function Xor128_random() {
return Xor128_init().make(3)[2] / 4294967296 * 2;
};
Xor128.random = Xor128_random;
Xorshift = Xor128;
var CHARS = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split('');
function RFC4122_uuid() {
var _chars = CHARS,
i = 0,
uuid = new Array(36),
rnd = 0;
uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-';
uuid[14] = '4';
for (; i < 36; ++i) {
if (i !== 8 && i !== 13 && i !== 18 && i !== 14 && i !== 23) {
if (rnd <= 0x02) {
rnd = 0x2000000 + (Xorshift.random() * 0x1000000) | 0;
}
rnd >>= 4;
uuid[i] = _chars[(i === 19) ? ((rnd & 0xf) & 0x3) | 0x8 : rnd & 0xf];
}
}
return uuid.join('');
};
function detectPlugin(callbacks) {
if (callbacks) {
if (callbacks.success && typeof callbacks.success === 'function') {
Signiant.Mst.detectPluginSuccess = callbacks.success;
}
if (callbacks.error && typeof callbacks.error === 'function') {
Signiant.Mst.detectPluginError = callbacks.error;
}
}
try {
var pluginDetailsUrl = generateURLForPluginDetails();
if ('withCredentials' in new XMLHttpRequest()) {
detectPluginForOtherThanIE8_9(pluginDetailsUrl);
} else {
detectPluginForIE8_9(pluginDetailsUrl);
}
} catch (e) {
Signiant.Mst.log('Failed to query the latest plug-in version from Media Shuttle');
Signiant.Mst.log(e);
if (Signiant.Mst.detectPluginError) {
Signiant.Mst.detectPluginError(messagesMap.getMessage('signiant.error.detectPlugin.failureAlert'));
} else {
alert(messagesMap.getMessage('signiant.error.detectPlugin.failureAlert'));
}
}
};
function detectPluginForOtherThanIE8_9(pluginDetailsUrl) {
jQuery.support.cors = true;
var xhr = getNewXMLHttpRequest();
xhr.onerror = failureInInstallOrUpgradePlugin;
xhr.onreadystatechange = function () {
if (xhr.readyState == 4) {
if (xhr.status == '200' && xhr.statusText == 'OK') {
installOrUpgradePlugin(JSON.parse(xhr.responseText), "SUCCESS", xhr);
} else {
failureInInstallOrUpgradePlugin(xhr);
}
}
};
xhr.open("GET", pluginDetailsUrl, true);
xhr.send();
};
function detectPluginForIE8_9(pluginDetailsUrl) {
if (isHttpProtocol()) {
var xdr = new XDomainRequest();
xdr.open("GET", pluginDetailsUrl);
xdr.onload = function () {
installOrUpgradePlugin(null, null, xdr);
};
xdr.onprogress = function () {};
xdr.ontimeout = function () {};
xdr.onerror = function () {
failureInInstallOrUpgradePlugin();
};
setTimeout(function () {
xdr.send();
}, 0);
} else {
var xhrForPlugin;
try {
xhrForPlugin = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
xhrForPlugin = false;
}
if (xhrForPlugin) {
xhrForPlugin.onreadystatechange = function () {
if (xhrForPlugin.readyState == 4) {
if (xhrForPlugin.status == '200' && xhrForPlugin.statusText == 'OK') {
installOrUpgradePlugin(null, null, xhrForPlugin);
} else {
failureInInstallOrUpgradePlugin();
}
}
};
xhrForPlugin.open("GET", pluginDetailsUrl);
xhrForPlugin.setRequestHeader("Content-Type", "application/json");
xhrForPlugin.send();
} else {
Signiant.Mst.log('Could not create a valid AJAX object in IE to get plugin details!');
if (Signiant.Mst.detectPluginError) {
Signiant.Mst.detectPluginError(messagesMap.getMessage('signiant.error.detectPlugin.failureAlert'));
} else {
alert(messagesMap.getMessage('signiant.error.detectPlugin.failureAlert'));
}
return;
}
}
};
function installOrUpgradePlugin(response, status, jqXHR) {
try {
if (jqXHR.responseText != "" && jqXHR.responseText != undefined) {
var responseJson = JSON.parse(jqXHR.responseText);
Signiant.Mst.minPluginVersion = responseJson['minPluginVersion'];
Signiant.Mst.pluginLatestVersion = responseJson['version'];
Signiant.Mst.pluginFileURL = responseJson['file'];
Signiant.Mst.pluginImageBaseURL = responseJson['imageBaseUrl'];
Signiant.Mst.log('Minimum supported plug-in version is: ' + Signiant.Mst.minPluginVersion + '.');
Signiant.Mst.log('Latest available plug-in version is: ' + Signiant.Mst.pluginLatestVersion + '.');
updatePluginStatus();
if (!oPluginStatus.isInstallRequired) {
Signiant.Mst.isPluginInstalled = true;
if (Signiant.Mst.detectPluginSuccess) {
Signiant.Mst.detectPluginSuccess();
}
} else {
showPluginDownloadView();
}
} else {
Signiant.Mst.log('Failure in getting plugin information from server.');
if (Signiant.Mst.detectPluginError) {
Signiant.Mst.detectPluginError(messagesMap.getMessage('signiant.error.detectPlugin.failureAlert'));
} else {
alert(messagesMap.getMessage('signiant.error.detectPlugin.failureAlert'));
}
}
} catch (e) {
Signiant.Mst.log('ERROR: Failed to install/upgrade the plugin. Cause: ' + e);
}
};
function failureInInstallOrUpgradePlugin() {
Signiant.Mst.log('Failure in getting response from server for plugin details ');
if (Signiant.Mst.detectPluginError) {
Signiant.Mst.detectPluginError(messagesMap.getMessage('signiant.error.detectPlugin.failureAlert'));
} else {
alert(messagesMap.getMessage('signiant.error.detectPlugin.failureAlert'));
}
}
function parseVersionStr(strVersion) {
var arrayMatches = strVersion.match(/^(\d+)\.(\d+)/);
return {
majorVersion: arrayMatches[1],
minorVersion: arrayMatches[2]
};
};
function parseFullVersionStr(strVersion) {
var arrayMatches = strVersion.match(/^(\d+)\.(\d+)\..*$/);
return {
majorVersion: arrayMatches[1],
minorVersion: arrayMatches[2]
};
};
function embedPlugin(pluginParentDivId, pluginDivName, pluginMajorVersion, pluginMinorVersion, fnAuthenticityCheckSuccessCallback, fnAuthenticityCheckFailureCallback, fnAuthenticityCheckErrorCallback) {
Signiant.Mst.firebreathRef.registerPlugin({
'name': pluginDivName,
'mimeType': 'application/x-signianttransfer-v' + pluginMajorVersion + '.' + pluginMinorVersion,
'activeXName': 'SigniantInc.' + oPluginStatus.installedVersionInfo.name
});
var pluginParentDiv = document.getElementById(pluginParentDivId);
if (pluginParentDiv == undefined || pluginParentDiv == null) {
pluginParentDiv = document.createElement('div');
pluginParentDiv.id = pluginParentDivId;
pluginParentDiv.height = '1';
pluginParentDiv.width = '1';
document.getElementsByTagName('body')[0].appendChild(pluginParentDiv);
} else {
Signiant.Mst.log('A DOM element with the ID ' + pluginParentDivId + ' already exists.');
}
Signiant.Mst.firebreathRef.injectPlugin(pluginDivName, pluginParentDiv, pluginDivName, '0%', '0%', function () {
Signiant.Mst.log('Injected new plug-in instance.');
});
};
function updatePluginStatus() {
var pluginBaseName = 'MediaShuttlePlugin';
var oMinReqMajorMinorVersions = parseVersionStr(Signiant.Mst.minPluginVersion);
var oLatestMajorMinorVersions = parseFullVersionStr(Signiant.Mst.pluginLatestVersion);
navigator.plugins.refresh(false);
if (Signiant.Mst.firebreathRef.isPluginInstalled(pluginBaseName, oMinReqMajorMinorVersions, oLatestMajorMinorVersions)) {
if (oPluginStatus.installedVersionInfo.majorVersion == oMinReqMajorMinorVersions.majorVersion) {
if (oPluginStatus.installedVersionInfo.minorVersion == oMinReqMajorMinorVersions.minorVersion || oPluginStatus.installedVersionInfo.minorVersion > oMinReqMajorMinorVersions.minorVersion) {
oPluginStatus.isInstallRequired = false;
} else if (oPluginStatus.installedVersionInfo.minorVersion < oMinReqMajorMinorVersions.minorVersion) {
oPluginStatus.isInstallRequired = true;
}
} else if (oPluginStatus.installedVersionInfo.majorVersion < oMinReqMajorMinorVersions.majorVersion) {
oPluginStatus.isInstallRequired = true;
} else if (oPluginStatus.installedVersionInfo.majorVersion > oMinReqMajorMinorVersions.majorVersion) {
oPluginStatus.isInstallRequired = false;
}
Signiant.Mst.log("Installed plug-in version is: " + oPluginStatus.installedVersionInfo.majorVersion + "." + oPluginStatus.installedVersionInfo.minorVersion);
} else {
oPluginStatus.isInstallRequired = true;
}
if (oPluginStatus.isInstallRequired) {
Signiant.Mst.log("Plug-in install/upgrade is required.");
} else {
Signiant.Mst.log("Plug-in install/upgrade is not required.");
}
}
function getInstructionDiv(colour, id, label, description, imageUrl) {
var platform = /Mac/.test(window.navigator.platform) ? "mac" : "win";
return $('<div/>').attr('id', id).css({
'border-bottom-color': colour.border,
'border-bottom-left-radius': '6px',
'border-bottom-right-radius': '6px',
'border-bottom-style': 'dashed',
'border-bottom-width': '2px',
'border-left-color': colour.border,
'border-left-style': 'dashed',
'border-left-width': '2px',
'border-right-color': colour.border,
'border-right-style': 'dashed',
'border-right-width': '2px',
'border-top-color': colour.border,
'border-top-left-radius': '6px',
'border-top-right-radius': '6px',
'border-top-style': 'dashed',
'border-top-width': '2px',
'display': 'table-cell'
}).append($('<img/>').attr('src', imageUrl + 'plugin-install-instruction-' + label + '-' + platform + '.png')).append($('<h1/>').css({
'color': colour.border,
'float': 'left',
'font-size': '36px',
'margin-bottom': '0px',
'margin-left': '10px',
'margin-right': '10px',
'margin-top': '0px'
}).html(label)).append($('<p/>').css({
'color': colour.textGrey,
'float': 'center',
'font-size': '16px',
'font-weight': 'bold'
}).html(description));
}
function downloadPlugin(pluginUrl) {
var controlId = 'plugin-download-control';
var downloadControl = $('#' + controlId);
if (downloadControl.length > 0) {
downloadControl.remove();
}
$('<iframe/>', {
id: controlId,
src: pluginUrl,
style: 'display:none'
}).appendTo('body');
}
function showPluginDownloadView() {
if ($('#native-plugin-not-found').length) return;
var colour = {
anchor: 'rgb(34, 154, 214)',
border: 'rgb(183, 213, 73)',
textBlue: 'rgb(34, 154, 214)',
textGrey: 'rgb(102, 102, 102)'
};
var imageUrl = Signiant.Mst.pluginImageBaseURL;
var fontFamily = 'SourceSansPro, Calibri, Geeza Pro, Arial, sans-serif';
var closeButton = $('<img/>').attr('src', imageUrl + 'close.png').css({
'height': '14px',
'position': 'absolute',
'right': '8px',
'top': '8px',
'width': '14px'
}).on('mouseenter', function () {
$(this).attr('src', imageUrl + 'closeHighlighted.png');
}).on('mouseleave', function () {
$(this).attr('src', imageUrl + 'close.png');
}).click(function () {
$('#native-plugin-not-found').remove();
$('#native-plugin-not-found-modal').remove();
if (Signiant.Mst.detectPluginWait) {
window.clearInterval(Signiant.Mst.detectPluginWait);
delete Signiant.Mst.detectPluginWait;
}
return false;
});
var pluginDownloadHeader = $('<div/>').attr('id', 'native-plugin-not-found-header').css({
'border-bottom-color': colour.border,
'border-bottom-style': 'solid',
'border-bottom-width': '2px',
'color': colour.textBlue,
'font-size': '18px',
'font-weight': 'bold',
'padding-bottom': '5px',
'padding-left': '5px',
'padding-right': '5px',
'padding-top': '5px'
}).append($('<img/>').attr('src', imageUrl + 'MediaShuttle.png').css({
'margin-right': '10px',
'maxHeight': '35px'
})).append(messagesMap.getMessage('signiant.install.plugin.header')).append(closeButton);
var pluginDownloadBody = $('<div/>').attr('id', 'native-plugin-not-found-body').css({
'color': colour.textGrey,
'font-size': '14px',
'padding-bottom': '15px',
'padding-left': '30px',
'padding-right': '30px',
'padding-top': '5px'
}).append($('<p/>').html(messagesMap.getMessage('signiant.install.plugin.missing'))).append($('<p/>').html(messagesMap.getMessage('signiant.install.plugin.explanation'))).append($('<div/>').css('text-align', 'center').append($('<button/>').css({
'background-color': 'rgb(32, 108, 192)',
'border-bottom-left-radius': '7px',
'border-bottom-right-radius': '7px',
'border-top-left-radius': '7px',
'border-top-right-radius': '7px',
'color': 'white',
'font-family': fontFamily,
'font-size': '16px',
'padding-bottom': '5px',
'padding-left': '15px',
'padding-right': '15px',
'padding-top': '5px'
}).attr('id', 'install-plugin-button').text(messagesMap.getMessage('signiant.install.plugin.button')).click(function () {
$('#native-plugin-not-found-body').css('display', 'none');
$('#native-plugin-not-found-install').css('display', 'block');
$('#native-plugin-not-found').css({
'margin-left': '-310px',
'width': '620px'
});
downloadPlugin(Signiant.Mst.pluginFileURL);
})));
var pluginDownloadInstall = $('<div/>').attr('id', 'native-plugin-not-found-install').css({
'color': colour.textGrey,
'display': 'none',
'font-size': '14px',
'padding-bottom': '15px',
'padding-left': '30px',
'padding-right': '30px',
'padding-top': '5px'
}).append($('<p/>').css('text-align', 'center').html(messagesMap.getMessage('signiant.install.plugin.download.prefix')).append($('<a/>').attr('id', 'native-plugin-not-found-direct').attr('href', Signiant.Mst.pluginFileURL).css('color', colour.anchor).text(messagesMap.getMessage('signiant.install.plugin.download.click')).click(function () {
downloadPlugin(Signiant.Mst.pluginFileURL);
})).append(messagesMap.getMessage('signiant.install.plugin.download.suffix'))).append(getInstructionDiv(colour, 'native-plugin-not-found-instruction-1', messagesMap.getMessage('signiant.install.plugin.download.step1.label'), messagesMap.getMessage('signiant.install.plugin.download.step1.description'), imageUrl)).append($('<div/>').css({
'display': 'table-cell'
}).html("&nbsp;&nbsp;")).append(getInstructionDiv(colour, 'native-plugin-not-found-instruction-2', messagesMap.getMessage('signiant.install.plugin.download.step2.label'), messagesMap.getMessage('signiant.install.plugin.download.step2.description'), imageUrl)).append($('<div/>').css({
'display': 'table-cell'
}).html("&nbsp;&nbsp;")).append(getInstructionDiv(colour, 'native-plugin-not-found-instruction-3', messagesMap.getMessage('signiant.install.plugin.download.step3.label'), messagesMap.getMessage('signiant.install.plugin.download.step3.description'), imageUrl));
var pluginDownloadFooter = $('<div/>').attr('id', 'native-plugin-not-found-footer').css({
'border-top-color': colour.border,
'border-top-style': 'solid',
'border-top-width': '2px',
'font-size': '12px',
'padding-bottom': '5px',
'padding-left': '5px',
'padding-right': '5px',
'padding-top': '5px'
}).append($('<span/>').css('float', 'left').append($('<a/>').attr('href', 'http://www.mediashuttle.com/').attr('target', '_blank').css('color', colour.anchor).text('www.mediashuttle.com'))).append($('<span/>').css('float', 'right').append($('<a/>').css('color', colour.anchor).attr('href', 'http://support.mediashuttle.com/plugin_EN.html').attr('target', '_blank').text(messagesMap.getMessage('signiant.install.plugin.help'))));
var pluginDownloadPopup = $('<div/>').attr('id', 'native-plugin-not-found').css({
'-moz-opacity': 1,
'background': '#fff',
'border-bottom-left-radius': '5px',
'border-bottom-right-radius': '5px',
'border-top-left-radius': '5px',
'border-top-right-radius': '5px',
'filter': 'alpha(opacity=100)',
'font-family': fontFamily,
'left': '50%',
'margin-left': '-240px',
'opacity': 1,
'margin-top': '10%',
'padding-bottom': '20px',
'padding-left': '10px',
'padding-right': '10px',
'padding-top': '5px',
'pointer-events': 'auto',
'position': 'fixed',
'top': '0px',
'width': '480px',
'z-index': 99999
}).append(pluginDownloadHeader).append(pluginDownloadBody).append(pluginDownloadInstall).append(pluginDownloadFooter);
var pluginDownloadModal = $('<div/>').attr('id', 'native-plugin-not-found-modal').css({
'-moz-opacity': 0.6,
'background-color': 'black',
'filter': 'alpha(opacity=60)',
'height': '100%',
'left': '0px',
'opacity': 0.6,
'position': 'fixed',
'top': '0px',
'width': '100%',
'z-index': 99998
});
$('body').append(pluginDownloadModal).append(pluginDownloadPopup);
waitForPluginToBeInstalled();
};
function waitForPluginToBeInstalled() {
try {
updatePluginStatus();
if (!oPluginStatus.isInstallRequired) {
$('#native-plugin-not-found').remove();
$('#native-plugin-not-found-modal').remove();
Signiant.Mst.isPluginInstalled = true;
if (Signiant.Mst.detectPluginSuccess) {
Signiant.Mst.detectPluginSuccess();
}
} else {
Signiant.Mst.detectPluginWait = setTimeout(waitForPluginToBeInstalled, 1000);
}
} catch (e) {
Signiant.Mst.log('Failed to query the latest plug-in version from Media Shuttle. Cause: ' + e);
if (Signiant.Mst.detectPluginError) {
Signiant.Mst.detectPluginError(messagesMap.getMessage('signiant.error.detectPlugin.failureAlert'));
} else {
alert(messagesMap.getMessage('signiant.error.detectPlugin.failureAlert'));
}
}
}
var initialize = function () {
try {
retrieveMstScriptTag();
validateAPIKey();
} catch (e) {
Signiant.Mst.log("Fatal Error: Failed to successfully initialize the application!");
Signiant.Mst.log(e);
}
};
function retrieveMstScriptTag() {
var mstScriptTag = document.getElementById('ms-api');
if (mstScriptTag == null || mstScriptTag == '') {
Signiant.Mst.validateKeyErrorMessage = messagesMap.getMessage('signiant.error.mst.script.missing');
return;
}
Signiant.Mst.mstScriptTag = mstScriptTag;
};
function retrievePluginAutoDetectMode() {
if (Signiant.Mst.mstScriptTag == undefined)
return;
var autoDetect = (Signiant.Mst.mstScriptTag).getAttribute('plugin-auto-detect');
if (autoDetect == "false") {
Signiant.Mst.pluginAutoDetect = false;
}
};
function validateAPIKey() {
if (Signiant.Mst.mstScriptTag == undefined) {
Signiant.Mst.log("Fatal error: Script tag with api-key not found!");
return;
}
var apiKey = (Signiant.Mst.mstScriptTag).getAttribute('api-key');
if (apiKey == null || apiKey == '') {
Signiant.Mst.validateKeyErrorMessage = messagesMap.getMessage('signiant.error.mst.script.apikey.missing');
return;
}
Signiant.Mst.apiKey = apiKey;
Signiant.Mst.log('Validating ApiKey : ' + Signiant.Mst.apiKey);
var keyValidationUrl = generateURLForKeyValidation();
if ('withCredentials' in new XMLHttpRequest()) {
validateAPIKeyForOtherThanIE8_9(keyValidationUrl);
} else {
validateAPIKeyForIE8_9(keyValidationUrl);
}
};
function validateAPIKeyForOtherThanIE8_9(keyValidationUrl) {
jQuery.support.cors = true;
var xhr = getNewXMLHttpRequest();
xhr.onerror = handleApiKeyValidationError;
xhr.onreadystatechange = function () {
if (xhr.readyState == 4) {
if (xhr.status == '200' && xhr.statusText == 'OK') {
handleApiKeyValidationSuccess(JSON.parse(xhr.responseText), "SUCCESS", xhr);
} else {
handleApiKeyValidationError(xhr);
}
}
};
xhr.open("GET", keyValidationUrl, true);
xhr.send();
};
function validateAPIKeyForIE8_9(keyValidationUrl) {
if (isHttpProtocol()) {
var xdr = new XDomainRequest();
xdr.open("GET", keyValidationUrl);
xdr.onload = function () {
var data = $.parseJSON(xdr.responseText);
if (data == null || typeof (data) == 'undefined') {
data = $.parseJSON(data.firstChild.textContent);
}
handleApiKeyValidationSuccess(data);
};
xdr.onprogress = function () {};
xdr.ontimeout = function () {};
xdr.onerror = function () {
handleApiKeyValidationError();
};
setTimeout(function () {
xdr.send();
}, 0);
} else {
var xhr;
try {
xhr = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
xhr = false;
}
if (xhr) {
xhr.onreadystatechange = function () {
if (xhr.readyState == 4) {
if (xhr.status == '200' && xhr.statusText == 'OK') {
handleApiKeyValidationSuccess(JSON.parse(xhr.responseText), "SUCCESS", xhr);
} else {
handleApiKeyValidationError(xhr);
}
}
};
xhr.open("GET", keyValidationUrl);
xhr.setRequestHeader("Content-Type", "application/json");
xhr.send();
} else {
Signiant.Mst.validateKeyErrorMessage = messagesMap.getMessage('signiant.error.mst.script.apikey.unknown');
Signiant.Mst.log('Could not create a valid AJAX object in IE to validate the API Key!');
return;
}
}
};
function isHttpProtocol() {
var callerUrl = window.location.href;
if (callerUrl.substr(0, 5).replace(":", "") == 'http' || callerUrl.substr(0, 5).replace(":", "") == 'https') {
return true;
}
return false;
};
function adjustCORSURLProtocolForIE8_9_Browsers(url) {
if (url !== undefined && url.length != 0) {
if (window.ActiveXObject) {
var urlProtocol = url.substr(0, 5).replace(":", "");
var pageURL = $.trim(window.location.href);
var pageURLProtocol = pageURL.substr(0, 5).replace(":", "");
if (pageURLProtocol == "http") {
url = url.replace(urlProtocol, "http");
} else if (pageURLProtocol == "https") {
url = url.replace(urlProtocol, "https");
} else if (pageURLProtocol == "file") {
url = url.replace(urlProtocol, "https");
}
}
}
return url;
};
function getBaseURL() {
var baseURL = "";
var protocol = "";
if (window.ActiveXObject) {
var callerUrl = $.trim(window.location.href);
protocol = callerUrl.substr(0, 5).replace(":", "");
if (protocol == "http") {
baseURL = "http://";
} else if (protocol == "https") {
baseURL = "https://";
} else if (protocol == "file") {
baseURL = "https://";
}
} else if (navigator.plugins) {
baseURL = "https://";
}
return baseURL + Signiant.Mst.envHostName + Signiant.Mst.REST + Signiant.Mst.VER;
};
function generateURLForKeyValidation() {
return getBaseURL() + "/apiKey/" + Signiant.Mst.apiKey + "/validate";
};
function generateURLForPluginDetails() {
return getBaseURL() + "/plugin";
}
function handleApiKeyValidationSuccess(response, status, jqXHR) {
Signiant.Mst.isValidAPIKey = true;
extractBaseTransferConfig(response);
Signiant.Mst.log('Api Key validation was successful');
};
function extractBaseTransferConfig(response) {
try {
Signiant.Mst.transferStatsUrl = response['transferStatsUrl'];
Signiant.Mst.trialKeyAgentsList = response['validAgentsList'];
} catch (e) {
Signiant.Mst.log("Failed to extract the base transfer configuration " + "from the Api Key validation response! " + e);
}
};
function handleApiKeyValidationError(response) {
Signiant.Mst.isValidAPIKey = false;
try {
var result = "";
if (response != undefined && response.responseText != "" && response.responseText != undefined) {
var responseJson = JSON.parse(response.responseText);
result = responseJson['result'];
Signiant.Mst.log(result);
} else {
Signiant.Mst.log('API key does not exist.');
result = messagesMap.getMessage('signiant.error.mst.script.apikey.invalid');
}
Signiant.Mst.validateKeyErrorMessage = result;
} catch (e) {
Signiant.Mst.log('Failure in handling the error reponse from the server for the api key ' + Signiant.Mst.apiKey);
}
};
function getVersion() {
return Signiant.Mst.apiVersion;
};
function addDOMListeners() {
var initDone = false;
if (!window.jQueryCheckCount) window.jQueryCheckCount = 0;
window.jQueryCheckCount += 1;
if (window.jQueryCheckCount < 100) {
if (typeof jQuery !== 'undefined' && typeof $ === 'function') {
if (document.readyState === "complete") {
setTimeout(initialize, 0);
initDone = true;
} else if (document.body) {
initialize();
initDone = true;
}
}
if (initDone == false) {
setTimeout(addDOMListeners, 100);
}
} else {
window.alert(messagesMap.getMessage('signiant.error.jquery.missing'));
}
};
function retrieveEnvHostName() {
var injectedMstScriptTag = document.getElementById('ms-transfer-api');
var success = false;
var exceptionMsg;
if (injectedMstScriptTag == undefined || injectedMstScriptTag == null || injectedMstScriptTag == '') {
exceptionMsg = "Fatal error: Could not retrieve script tag ms-transfer-api!";
} else {
Signiant.Mst.envHostName = (injectedMstScriptTag).getAttribute('env-host-name');
if (Signiant.Mst.envHostName === undefined || Signiant.Mst.envHostName == null || Signiant.Mst.envHostName.length == 0) {
exceptionMsg = "Fatal error: Could not retrieve env-host-name from script tag ms-transfer-api!";
} else {
success = true;
}
}
if (!success) {
window.alert('Failed to determine the Media Shuttle Transfer API hosted environment! Application will not function.');
throw exceptionMsg;
}
};
(function () {
if (!window.Signiant || !window.Signiant.Mst) {
try {
if (!window.Signiant) window.Signiant = {};
if (!window.Signiant.Mst) window.Signiant.Mst = {};
retrieveEnvHostName();
if (window.addEventListener) {
window.addEventListener("load", addDOMListeners, false);
} else if (window.attachEvent) {
window.attachEvent("onload", addDOMListeners);
} else {
window['onload'] = addDOMListeners;
}
} catch (e) {
if (window.console) {
if (console.log) {
console.log("Fatal Error: Failed to successfully initialize the application!");
console.log(e);
}
}
}
}
})();
Signiant.Mst.apiVersion = "1.0";
Signiant.Mst.apiKey;
Signiant.Mst.isValidAPIKey = false;
Signiant.Mst.mstScriptTag;
Signiant.Mst.pluginAutoDetect = false;
Signiant.Mst.isPluginInstalled = false;
Signiant.Mst.envHostName;
Signiant.Mst.REST = "/REST";
Signiant.Mst.VER = "/v1.0";
Signiant.Mst.INFO_LOG_LEVEL = "INFO";
Signiant.Mst.DEBUG_LOG_LEVEL = "DEBUG";
Signiant.Mst.transferStatsUrl;
Signiant.Mst.trialKeyAgentsList;
Signiant.Mst.minPluginVersion;
Signiant.Mst.transferStartedEvent = 'TRANSFER_STARTED';
Signiant.Mst.connectionStatusEvent = 'TRANSFER_CONNECTION_STATUS';
Signiant.Mst.connectionStatusComponentQueuedEvent = 'TRANSFER_QUEUED';
Signiant.Mst.transferCompletedEvent = 'TRANSFER_COMPLETED';
Signiant.Mst.uploadFilesChosenEvent = 'UPLOAD_FILES_CHOSEN';
Signiant.Mst.downloadFolderChosenEvent = 'DOWNLOAD_FOLDER_CHOSEN';
Signiant.Mst.tooManyFilesChosenEvent = 'UPLOAD_TOO_MANY_FILES_CHOSEN';
Signiant.Mst.uploadFilesProcessedEvent = 'UPLOAD_FILES_PROCESSED';
Signiant.Mst.transferPreFileEvent = 'TRANSFER_PRE_FILE_EVENT';
Signiant.Mst.transferWarnEvent = 'TRANSFER_WARN_EVENT';
Signiant.Mst.transferErrorsEvent = 'TRANSFER_ERROR_EVENT';
Signiant.Mst.transferCanceledEvent = 'TRANSFER_CANCEL_EVENT';
Signiant.Mst.invalidCredentialsCode = 'INVALID_CREDENTIALS';
Signiant.Mst.noFilesForUploadCode = 'SPECIFIED_FILE_DOES_NOT_EXIST';
Signiant.Mst.noFilesForDownloadCode = 'DOWNLOAD_FILES_DO_NOT_EXIST';
Signiant.Mst.noDestinationFolderCode = 'NO_FOLDER_CHOSEN_FOR_DOWNLOAD';
Signiant.Mst.connectionFailureCode = 'CONNECTION_FAILURE';
Signiant.Mst.incompleteUserCredentials = 'INCOMPLETE_USER_CREDENTIALS';
Signiant.Mst.invalidDestinationDirectory = 'INVALID_DESTINATION_DIRECTORY';
Signiant.Mst.preTransferEvent = 'PRE_TRANSFER_EVENT';
Signiant.Mst.transferExceptionEvent = 'TRANSFER_EXCEPTION';
Signiant.Mst.injectedFileEntriesFoundEvent = 'INJECTED_FILES_FOUND_EVENT';
Signiant.Mst.injectedDestDirFoundEvent = 'INJECTED_DESTINATION_DIR_EVENT';
Signiant.Mst.transferStartedEventName = 'cte_plugin_transferStarted';
Signiant.Mst.preTransferEventName = 'cte_plugin_preTransfer';
Signiant.Mst.connectionStatusChangeEventName = 'cte_plugin_connectionStatusChange';
Signiant.Mst.connectionStatusComponentQueuedEventName = 'cte_plugin_connectionStatusComponentQueued';
Signiant.Mst.preFileEventName = 'cte_plugin_preFile';
Signiant.Mst.warnEventName = 'cte_plugin_warn';
Signiant.Mst.transferProgressEventName = 'cte_plugin_transferProgress';
Signiant.Mst.postTransferEventName = 'cte_plugin_postTransfer';
Signiant.Mst.transferFailureEventName = 'cte_plugin_transferFailure';
Signiant.Mst.exceptionEventName = 'cte_plugin_exception';
Signiant.Mst.downloadDestinationChosenEventName = 'cte_plugin_downloadDestinationChosen';
Signiant.Mst.uploadFilesChosenEventName = 'cte_plugin_uploadFilesChosen';
Signiant.Mst.uploadFilesProcessedEventName = 'cte_plugin_uploadFilesProcessed';
Signiant.Mst.tooManyUploadFilesChosenEventName = 'cte_plugin_tooManyUploadFilesChosen';
Signiant.Mst.transferEventList = [Signiant.Mst.transferStartedEventName, Signiant.Mst.preTransferEventName, Signiant.Mst.connectionStatusChangeEventName, Signiant.Mst.connectionStatusComponentQueuedEventName, Signiant.Mst.preFileEventName, Signiant.Mst.warnEventName, Signiant.Mst.transferProgressEventName, Signiant.Mst.postTransferEventName, Signiant.Mst.transferFailureEventName, Signiant.Mst.exceptionEventName, Signiant.Mst.downloadDestinationChosenEventName, Signiant.Mst.uploadFilesChosenEventName, Signiant.Mst.uploadFilesProcessedEventName, Signiant.Mst.tooManyUploadFilesChosenEventName];
Signiant.Mst.filesSelectedCallback;
Signiant.Mst.folderSelectedCallback;
Signiant.Mst.maxNumberFiles = 10000;
Signiant.Mst.isConsoleDefined = false;
oPluginStatus = {
installedVersionFound: false,
installedVersionInfo: {
name: null,
majorVersion: -1,
minorVersion: -1
},
isInstallRequired: false
};
if (window.console) {
if (console.log) {
Signiant.Mst.isConsoleDefined = true;
}
}
Signiant.Mst.getPluginPropName = function () {
return oPluginStatus.installedVersionInfo.name;
};
Signiant.Mst.log = function (text) {
if (Signiant.Mst.isConsoleDefined == true) {
try {
console.log(text);
} catch (e) {}
}
};
Signiant.Mst.trimFileStr = function (str) {
return str.replace(/(\\r\\n|\\n|\\r)/gm, "").replace(/^\s+|\s+$/g, "");
};
Signiant.Mst.validateEventName = function (eventName) {
var index = -1;
for (var i = 0; i < Signiant.Mst.transferEventList.length; i++) {
if (Signiant.Mst.transferEventList[i] === eventName) {
index = i;
break;
}
};
if (index == -1)
throw messagesMap.getMessageForTransport('signiant.transfer.error.nonExistingEvent');
};
Signiant.Mst.validateTransferAgentsList = function (txUrl) {
if (Signiant.Mst.trialKeyAgentsList == undefined) {
return;
} else {
if (txUrl !== undefined && txUrl.length !== 0) {
var txAgentsList = Signiant.Mst.getAgentsFromUrlList(txUrl);
for (var txAgent in txAgentsList) {
var txAgentValid = false;
for (var i = 0; i < Signiant.Mst.trialKeyAgentsList.length; ++i) {
if (txAgent.toLowerCase() === Signiant.Mst.trialKeyAgentsList[i].toLowerCase()) {
txAgentValid = true;
break;
}
}
if (!txAgentValid) {
throw messagesMap.getMessageForTransport('signiant.transfer.error.invalidAgentForTrialKey');
}
}
}
}
};
Signiant.Mst.getAgentsFromUrlList = function (urlList) {
var agents = {};
if (urlList !== undefined && urlList.length !== 0) {
var protocolSpecificAgentsList = urlList.split('\n');
if (protocolSpecificAgentsList !== undefined && protocolSpecificAgentsList.length > 0) {
for (var i = 0; i < protocolSpecificAgentsList.length; ++i) {
var agentsForProtocol = Signiant.Mst.getAgentsFromProtocolList(protocolSpecificAgentsList[i]);
for (var j = 0; j < agentsForProtocol.length; ++j) {
if (!(agentsForProtocol[j] in agents)) {
agents[agentsForProtocol[j]] = true;
}
}
}
}
}
return agents;
};
Signiant.Mst.getAgentsFromProtocolList = function (protocolStringWithAgents) {
var agents = [];
var mxwanStr = 'mxwan://';
var mxtcpStr = 'mxtcp://';
var httpStr = 'http://';
if (protocolStringWithAgents !== undefined && protocolStringWithAgents.length !== 0) {
var agentsInProtocolString = protocolStringWithAgents.split('|');
for (var i = 0; i < agentsInProtocolString.length; ++i) {
var agentString = agentsInProtocolString[i];
var indexOfRelay;
var prefix;
var agentName;
var indexOfColon;
var endIndex;
if (agentString.indexOf(mxwanStr) == 0) {
prefix = mxwanStr;
} else if (agentString.indexOf(mxtcpStr) == 0) {
prefix = mxtcpStr;
} else {
prefix = httpStr;
}
agentString = agentString.substring(prefix.length, agentString.length);
indexOfRelay = agentString.indexOf('@');
indexOfColon = agentString.indexOf(':');
endIndex = (indexOfRelay != -1 ? indexOfRelay : (indexOfColon != -1 ? indexOfColon : agentString.length));
agentName = agentString.substring(0, endIndex);
agents[agents.length] = agentName;
}
}
return agents;
};
Signiant.Mst.Messages = function () {
var messagesMap = {
'signiant.error.jquery.missing': 'Unable to locate jQuery. Aborting.',
'signiant.error.mst.script.apikey.invalid': 'API key does not exist.',
'signiant.error.mst.script.apikey.missing': 'A valid api-key must be specified in the api-key attribute of the <script> tag',
'signiant.error.mst.script.apikey.unknown': 'Could not validate the API key due to an unexpected error',
'signiant.error.mst.script.missing': 'Could not find a <script> tag with id ms-api',
'signiant.error.validateKeyUnknown': 'An unknown error occurred while validating API key.',
'signiant.install.plugin.button': 'Install Plug-in',
'signiant.install.plugin.download.prefix': 'If your download does not start automatically, please ',
'signiant.install.plugin.download.click': 'click here',
'signiant.install.plugin.download.suffix': '.',
'signiant.install.plugin.download.step1.label': '1',
'signiant.install.plugin.download.step1.description': 'Download',
'signiant.install.plugin.download.step2.label': '2',
'signiant.install.plugin.download.step2.description': 'Run',
'signiant.install.plugin.download.step3.label': '3',
'signiant.install.plugin.download.step3.description': 'Use',
'signiant.install.plugin.explanation': 'This plug-in is required to secure and accelerate your Media Shuttle transfers. Click Install Plug-in to start the install/update process.',
'signiant.install.plugin.header': 'Transfer Plug-in',
'signiant.install.plugin.help': 'Help',
'signiant.install.plugin.missing': 'A plug-in needed by Media Shuttle could not be found.',
'signiant.transfer.error.auth': 'Transfer authentication error.',
'signiant.transfer.error.auth.config': 'Transfer authentication error due to an incomplete configuration.',
'signiant.transfer.error.auth.credentials.incomplete': 'Transfer authentication error due to missing credentials.',
'signiant.transfer.error.auth.credentials.invalid': 'Transfer authentication error due to invalid credentials.',
'signiant.transfer.error.auth.ssl.ca': 'Transfer authentication error due to an SSL communication error with the Media Shuttle server.',
'signiant.transfer.error.auth.ssl.ca.config': 'Transfer authentication error due to an SSL configuration error.',
'signiant.transfer.error.auth.ssl.ca.insufficientMemory': 'Transfer authentication error due to an SSL communication error with the Media Shuttle server.',
'signiant.transfer.error.auth.ssl.ca.missing': 'Transfer authentication error due to an SSL configuration error.',
'signiant.transfer.error.auth.ssl.certificateRejected': "Transfer authentication error because the Media Shuttle server's SSL certificate was rejected.",
'signiant.transfer.error.auth.ssl.context': 'Transfer authentication error due to an SSL communication error with the Media Shuttle server.',
'signiant.transfer.error.autoRetry': 'The connection to your Media Shuttle server was lost. Automatically reconnecting in 1 minute.',
'signiant.transfer.error.callbackFailedForConnStatus': 'Failed to call callback for connection status event.',
'signiant.transfer.error.callbackFailedForConnStatusCompQueued': 'Failed to call callback for connection-queued event.',
'signiant.transfer.error.callbackFailedForPostXfer': 'Failed to call callback for post transfer event.',
'signiant.transfer.error.callbackFailedForPreXfer': 'Failed to call callback for pre transfer event.',
'signiant.transfer.error.callbackFailedForTooManyFiles': 'Failed to send callback for too many files chosen while upload.',
'signiant.transfer.error.callbackFailedForXferPrefile': 'Failed to call callback for pre file event.',
'signiant.transfer.error.callbackFailedForXferStart': 'Failed to call callback for transfer started event.',
'signiant.transfer.error.connection.dataChannel': 'Unable to establish a connection to the Media Shuttle server.',
'signiant.transfer.error.connection.hostNotFound': 'Unable to establish a connection to the Media Shuttle server.',
'signiant.transfer.error.connection.insufficientMemory': 'The connection to the Media Shuttle server was lost.',
'signiant.transfer.error.connection.lostHeartBeat': 'The connection to the Media Shuttle server was lost.',
'signiant.transfer.error.connection.readChannel': 'Unable to read any data from the Media Shuttle server.',
'signiant.transfer.error.connection.writeChannel': 'Unable to write any data to the Media Shuttle server.',
'signiant.transfer.error.failedToCancelTransfer': 'Failed to cancel transfer.',
'signiant.transfer.error.failedToProcessUploadFiles': 'Failed to process upload files.',
'signiant.transfer.error.failedToChooseDownloadFolder': 'Failed to choose download folder.',
'signiant.transfer.error.failedToChooseFolder': 'Failed to choose folder.',
'signiant.transfer.error.failedToChooseUploadFiles': 'Failed to choose upload files.',
'signiant.transfer.error.failedToRemoveUploadFiles': 'Failed to choose remove files.',
'signiant.transfer.error.failedToClearFiles': 'Failed to clear specified files.',
'signiant.transfer.error.failedToRemoveFilesFromProperty': 'Failed to remove file from Files property.',
'signiant.transfer.error.failedToClearAllFiles': 'Failed to clear all files.',
'signiant.transfer.error.failedToClearServerList': 'Failed to clear server list.',
'signiant.transfer.error.failedToDownload': 'Failed to start the download.',
'signiant.transfer.error.failedToDownloadAtPlugin': 'Failed to download files.',
'signiant.transfer.error.failedToHandleCallback': 'Failed to handle callback.',
'signiant.transfer.error.failedToHandleErrors': 'Failed to handle errors.',
'signiant.transfer.error.failedToHandleException': 'Failed to handle transfer exception event.',
'signiant.transfer.error.failedToHandleUploadFilesProcessed': 'Failed to handle upload files processed event',
'signiant.transfer.error.failedToCalcSelectedFileSize': 'Failed to perform processing of the selected files to calculate sizes',
'signiant.transfer.error.failedToHandleXferProgress': 'Failed to handle transfer-progress event.',
'signiant.transfer.error.failedToSetDownloadFolder': 'Failed to set chosen download folder.',
'signiant.transfer.error.failedToSetLogLevel': 'Failed to set plug-in log-level.',
'signiant.transfer.error.failedToSetUploadFiles': 'Failed to set chosen upload files.',
'signiant.transfer.error.failedToSubscribeBasicEvents': 'Failed to subscribe basic events.',
'signiant.transfer.error.failedToSubscribeForAdvEvent': 'Failed to subscribe for event: ',
'signiant.transfer.error.failedToSubscribeForEvent': 'Could not subscribe to event as the transfer-plugin could not be found in the DOM:',
'signiant.transfer.error.failedToSubscribeXferErrors': 'Failed to subscribe for transfer-errors event.',
'signiant.transfer.error.failedToSubscribeXferProgress': 'Failed to subscribe for transfer-progress events.',
'signiant.transfer.error.failedToUpload': 'Failed to start the upload.',
'signiant.transfer.error.failedToUploadAtPlugin': 'Failed to upload files.',
'signiant.transfer.error.fallbackToOneStar': 'Unable to connect to your Media Shuttle server using 2 Star service. Connecting using 1 Star service instead.',
'signiant.transfer.error.fallbackToTwoStar': 'Unable to connect to your Media Shuttle server using 3 Star service. Connecting using 2 Star service instead.',
'signiant.transfer.error.invalidLogLevel': 'Supplied plug-in log-level is invalid: ',
'signiant.transfer.error.invalidServer': 'Please specify a valid server.',
'signiant.transfer.error.invalidAgentForTrialKey': 'With unlincensed API keys, you can only perform transfers to/from our cloud-hosted servers.',
'signiant.transfer.error.invalidCallback': 'Please supply a callback method.',
'signiant.transfer.error.invalidDestinationDir': 'Please supply a valid Destination Directory.',
'signiant.transfer.error.invalidListOfFiles': 'Please supply a list of files as an Array.',
'signiant.transfer.error.invalidPassword': 'Please supply a valid Password.',
'signiant.transfer.error.invalidPropertyDelete': 'Please provide a String value for name of the property you wish to delete.',
'signiant.transfer.error.invalidPropertyName': 'Please provide a String value for the name of the property you wish to modify.',
'signiant.transfer.error.invalidPropertyRetrieval': 'Please provide a String value for the name of the property you wish to retrieve.',
'signiant.transfer.error.invalidTransferProperties': 'Please provide transfer properties in the form of a JSON object.',
'signiant.transfer.error.invalidTrustedCA': 'Please supply a valid certificate for the Certificate Authority',
'signiant.transfer.error.invalidUsername': 'Please supply a valid Username.',
'signiant.transfer.error.nonExistingEvent': 'Please supply a valid event name.',
'signiant.transfer.error.invalidFilePathHandlingMode': 'Please supply a valid File Path Handling Mode. The Mode can be either PATH or FULL or FLAT',
'signiant.transfer.error.invalidFileCollisionHandling': 'Please supply a valid File Collision Handling Mode. The Mode can be either overwrite or version ',
'signiant.transfer.error.noTransferToCancel': 'No transfer in progress to cancel.',
'signiant.transfer.error.property.agent.nameTooLong': 'The agent name property is too long.',
'signiant.transfer.error.property.bandwidthThrottle.invalid': 'The bandwidth throttle property setting is invalid.',
'signiant.transfer.error.property.destinationDir.invalid': 'The destination dir property setting is invalid.',
'signiant.transfer.error.property.destinationDir.notFound': 'The destination dir property setting is missing.',
'signiant.transfer.error.property.encryption.unsupported': 'The encryption property setting specifies an unsupported encryption type.',
'signiant.transfer.error.property.file.invalid': 'The file specification property is invalid.',
'signiant.transfer.error.property.file.notFound': 'The file property specifies a file which does not exist on the agent.',
'signiant.transfer.error.property.file.nameTooLong': 'The file property specifies a file with a name which is too long.',
'signiant.transfer.error.property.file.open': 'The file property specifies a file which can not be opened by the agent.',
'signiant.transfer.error.property.file.unsupported': 'The file property specifies a file which can not be transferred because its file type is unsupported.',
'signiant.transfer.error.property.fileCollision.invalid': 'The file collision handling property is invalid.',
'signiant.transfer.error.property.fileList.notFound': 'Unable to find any of the files requested from the Media Shuttle agent.',
'signiant.transfer.error.property.mode.invalid': 'The mode property must be set to send or receive.',
'signiant.transfer.error.property.sandbox.notFound': 'The sandbox directory property setting is invalid.',
'signiant.transfer.error.property.transport.unsupported': 'The transport property setting specifies an unsupported transport type.',
'signiant.transfer.error.property.url.invalid': 'Encountered a URL with an invalid format.',
'signiant.transfer.error.specifyConfigForDownload': 'Please specify configuration properties to perform an download.',
'signiant.transfer.error.specifyConfigForUpload': 'Please specify configuration properties to perform an upload.',
'signiant.transfer.error.specifyFileToDownload': 'Please specify at least one file to download.',
'signiant.transfer.error.specifyFileToUpload': 'Please specify at least one file to add to the list of files to be uploaded.',
'signiant.transfer.error.stream.fileDisposition.unsupported': 'Encountered an unsupported file disposition request.',
'signiant.transfer.error.stream.fileType.unsupported': 'Encountered an unsupported file type.',
'signiant.transfer.error.tooManyFiles': 'The number of files chosen for upload exceeds the maximum number of allowable files.',
'signiant.transfer.error.undefinedFileSelectCallback': 'Callback is not defined for file selector.',
'signiant.transfer.error.undefinedFolderSelectCallback': 'Callback is not defined for folder selector.',
'signiant.transfer.error.undefinedListOfFiles': 'Please supply a valid list of files for the transfer.',
'signiant.transfer.error.undefinedListOfFilesToClear': 'Please supply a valid list of files to clear.',
'signiant.transfer.error.undefinedPropertyDelete': 'Please specify a valid name for the property you wish to delete.',
'signiant.transfer.error.undefinedPropertyName': 'Please specify a valid name for the property you wish to set.',
'signiant.transfer.error.undefinedPropertyRetrieval': 'Please specify a valid name for the property you wish to retrieve.',
'signiant.transfer.error.undefinedPropertyValue': 'Please specify a valid value for property ',
'signiant.transfer.error.undefinedTransferProperties': 'Please specify some properties for the transfer.',
'signiant.transfer.error.unexpectedError': 'Unable to perform transfer. Please verify the supplied transfer properties and selected files.',
'signiant.transfer.error.unexpectedProperties': 'Unable to perform transfer. Please verify the supplied transfer properties.',
'signiant.transfer.error.unexpectedResponse': 'The Media Shuttle server returned an unexpected response during file transfer. Your transfer has been canceled.',
'signiant.transfer.error.unexpectedResponse.fileSequenceNum.notFound': 'The Media Shuttle server returned an unexpected response during file transfer. Your transfer has been canceled.',
'signiant.transfer.error.unexpectedResponse.server.dataType': 'The Media Shuttle server returned an unexpected response during file transfer. Your transfer has been canceled.',
'signiant.transfer.error.injected.file.entries.found': 'Injected file entries detected.',
'signiant.transfer.error.injected.dest.dir.found': 'Injected destination directory detected.',
'signiant.transfer.error.unexpectedResponse.server.malformedData': 'The Media Shuttle server returned an unexpected response during file transfer. Your transfer has been canceled.',
'signiant.transfer.error.jobNamePrefix.invalidJobNamePrefix': 'The specified Job Name Prefix is invalid. Value must be aplha numeric and limited to 32 characters. ',
'signiant.transfer.error.jobNamePrefix.failure': 'Please provide a value for Job Name Prefix.',
'signiant.transfer.error.serviceData.failure': 'Please provide a value for Service Data.',
'signiant.transfer.status.transferStarted': 'Transfer started',
'signiant.transfer.status.preTransfer': 'Pre Transfer',
'signiant.transfer.status.preFile': 'Pre File',
'signiant.transfer.status.connectionStatusComponentQueued': 'Connection Queued',
'signiant.transfer.transferException': 'Exception in transfer',
'signiant.transfer.uploadFilesProcessed': 'Upload Files Processed',
'signiant.transfer.status.connected': 'Connected to server',
'signiant.transfer.status.connecting': 'Connecting to server..',
'signiant.transfer.status.disconnected': 'Disconnected from server',
'signiant.transfer.status.disconnecting': 'Disconnecting from server..',
'signiant.transfer.status.transferFailed': 'Transfer Failed.',
'signiant.transfer.status.transferring': 'Started transferring files..',
'signiant.transfer.status.transferCanceled': 'Transfer Canceled.',
'signiant.transfer.status.transferSuccessful': 'Transfer Successful.',
'signiant.error.detectPlugin.failureAlert': 'Failed to query the latest plug-in version from Media Shuttle'
};
return {
getMessage: function (messageKey) {
return messagesMap[messageKey];
},
setMessages: function (mapJson) {
if (mapJson && mapJson instanceof Object) {
for (var property in messagesMap) {
delete(messagesMap[property]);
}
for (var property in mapJson) {
messagesMap[property] = mapJson[property];
}
}
},
getMessageForTransport: function (transportErrorCode) {
var message = '';
if (transportErrorCode in messagesMap) {
message = this.getMessage(transportErrorCode);
} else if (transportErrorCode == 'AutomaticReconnectionWarningText') {
message = this.getMessage('signiant.transfer.error.autoRetry');
} else if (transportErrorCode == 'ConnectionAbortedException-DATA_CHANNEL_TO_SERVER_FAILURE') {
message = this.getMessage('signiant.transfer.error.connection.dataChannel');
} else if (transportErrorCode == 'ConnectionAbortedException-HOST_NOT_FOUND') {
message = this.getMessage('signiant.transfer.error.connection.hostNotFound');
} else if (transportErrorCode == 'ConnectionAbortedException-INSUFFICIENT_MEMORY_FOR_CTE_SESSION') {
message = this.getMessage('signiant.transfer.error.connection.insufficientMemory');
} else if (transportErrorCode == 'ConnectionAbortedException-LOST_HEART_BEAT') {
message = this.getMessage('signiant.transfer.error.connection.lostHeartBeat');
} else if (transportErrorCode == 'ConnectionAbortedException-READ_CHANNEL_FAILURE') {
message = this.getMessage('signiant.transfer.error.connection.readChannel');
} else if (transportErrorCode == 'ConnectionAbortedException-WRITE_CHANNEL_FAILURE') {
message = this.getMessage('signiant.transfer.error.connection.writeChannel');
} else if (transportErrorCode == 'InvalidAuthenticationException-CERTIFICATE_REJECTED') {
message = this.getMessage('signiant.transfer.error.auth.ssl.certificateRejected');
} else if (transportErrorCode == 'InvalidAuthenticationException-ERROR_BINDING_CA_CERT_TO_SSL_CONTEXT') {
message = this.getMessage('signiant.transfer.error.auth.ssl.ca');
} else if (transportErrorCode == 'InvalidAuthenticationException-ERROR_CREATING_SSL_CONTEXT') {
message = this.getMessage('signiant.transfer.error.auth.ssl.context');
} else if (transportErrorCode == 'InvalidAuthenticationException-ERROR_LOADING_CONFIGURED_CA_CERT') {
message = this.getMessage('signiant.transfer.error.auth.ssl.ca.config');
} else if (transportErrorCode == 'InvalidAuthenticationException-INCOMPLETE_AGENT_OR_PROTOCOL_INFO') {
message = this.getMessage('signiant.transfer.error.auth.config');
} else if (transportErrorCode == 'InvalidAuthenticationException-INCOMPLETE_USER_CREDENTIALS') {
message = this.getMessage('signiant.transfer.error.auth.credentials.incomplete');
} else if (transportErrorCode == 'InvalidAuthenticationException-INSUFFICIENT_MEMORY_TO_LOAD_CA_CERT') {
message = this.getMessage('signiant.transfer.error.auth.ssl.ca.insufficientMemory');
} else if (transportErrorCode == 'InvalidAuthenticationException-INVALID_CREDENTIALS') {
message = this.getMessage('signiant.transfer.error.auth.credentials.invalid');
} else if (transportErrorCode == 'InvalidAuthenticationException-NO_TRUSTED_CA_CERT_CONFIGURED') {
message = this.getMessage('signiant.transfer.error.auth.ssl.ca.missing');
} else if (transportErrorCode == 'PropertyException-AGENT_NAME_TOO_LONG') {
message = this.getMessage('signiant.transfer.error.property.agent.nameTooLong');
} else if (transportErrorCode == 'PropertyException-EMPTY_OR_INVALID_FILE_SPECIFICATION') {
message = this.getMessage('signiant.transfer.error.property.file.invalid');
} else if (transportErrorCode == 'PropertyException-FILE_ENTRY_CANNOT_BE_OPENED') {
message = this.getMessage('signiant.transfer.error.property.file.open');
} else if (transportErrorCode == 'PropertyException-FILE_ENTRY_NOT_FOUND') {
message = this.getMessage('signiant.transfer.error.property.file.notFound');
} else if (transportErrorCode == 'PropertyException-FILE_ENTRY_NOT_REG_FILE_OR_DIR') {
message = this.getMessage('signiant.transfer.error.property.file.unsupported');
} else if (transportErrorCode == 'PropertyException-FILE_NAME_TOO_LONG') {
message = this.getMessage('signiant.transfer.error.property.file.nameTooLong');
} else if (transportErrorCode == 'PropertyException-INVALID_BANDWIDTH_THROTTLE') {
message = this.getMessage('signiant.transfer.error.property.bandwidthThrottle.invalid');
} else if (transportErrorCode == 'PropertyException-INVALID_DESTINATION_DIR') {
message = this.getMessage('signiant.transfer.error.property.destinationDir.invalid');
} else if (transportErrorCode == 'PropertyException-INVALID_FILE_COLLISION_HANDLING_SPECIFICATION') {
message = this.getMessage('signiant.transfer.error.property.fileCollision.invalid');
} else if (transportErrorCode == 'PropertyException-INVALID_MODE_SPECIFICATION') {
message = this.getMessage('signiant.transfer.error.property.mode.invalid');
} else if (transportErrorCode == 'PropertyException-INVALID_URL_IN_LIST') {
message = this.getMessage('signiant.transfer.error.property.url.invalid');
} else if (transportErrorCode == 'PropertyException-NO_DESTINATION_DIR_DEFINED') {
message = this.getMessage('signiant.transfer.error.property.destinationDir.notFound');
} else if (transportErrorCode == 'PropertyException-NO_FILES_TO_DOWNLOAD') {
message = this.getMessage('signiant.transfer.error.property.fileList.notFound');
} else if (transportErrorCode == 'PropertyException-NO_SANDBOX_DEFINED') {
message = this.getMessage('signiant.transfer.error.property.sandbox.notFound');
} else if (transportErrorCode == 'PropertyException-UNSUPPORTED_ENCRYPTION_TYPE') {
message = this.getMessage('signiant.transfer.error.property.encryption.unsupported');
} else if (transportErrorCode == 'PropertyException-UNSUPPORTED_TRANSPORT_TYPE') {
message = this.getMessage('signiant.transfer.error.property.transport.unsupported');
} else if (transportErrorCode == 'StreamException-UNSUPPORTED_FILE_DISPOSITION_REQUEST') {
message = this.getMessage('signiant.transfer.error.stream.fileDisposition.unsupported');
} else if (transportErrorCode == 'StreamException-UNSUPPORTED_FILE_TYPE') {
message = this.getMessage('signiant.transfer.error.stream.fileType.unsupported');
} else if (transportErrorCode == 'TransferFallbackWarningText{threeStarService}{twoStarService}') {
message = this.getMessage('signiant.transfer.error.fallbackToTwoStar');
} else if (transportErrorCode == 'TransferFallbackWarningText{twoStarService}{oneStarService}') {
message = this.getMessage('signiant.transfer.error.fallbackToOneStar');
} else if (transportErrorCode == 'UnexpectedResponseException-FILE_SEQUENCE_NUM_NOT_FOUND') {
message = this.getMessage('signiant.transfer.error.unexpectedResponse.fileSequenceNum.notFound');
} else if (transportErrorCode == 'UnexpectedResponseException-MALFORMED_DATA_FROM_SERVER') {
message = this.getMessage('signiant.transfer.error.unexpectedResponse.server.malformedData');
} else if (transportErrorCode == 'UnexpectedResponseException-UNEXPECTED_DATA_TYPE_FROM_SERVER') {
message = this.getMessage('signiant.transfer.error.unexpectedResponse.server.dataType');
} else if (transportErrorCode == 'PropertyException-INJECTED_FILE_ENTRIES_FOUND') {
message = this.getMessage('signiant.transfer.error.injected.file.entries.found');
} else if (transportErrorCode == 'PropertyException-INJECTED_DEST_DIR_FOUND') {
message = this.getMessage('signiant.transfer.error.injected.dest.dir.found');
}
return message;
}
};
};
var messagesMap = new Signiant.Mst.Messages();
Signiant.Mst.validateKeyErrorMessage = messagesMap.getMessage('signiant.error.validateKeyUnknown');
Signiant.Mst.Transfer = function () {
Signiant.Mst.Transfer.usernamePropName = 'com.signiant.interactivetransfer.engine.user';
Signiant.Mst.Transfer.passwordPropName = 'com.signiant.interactivetransfer.engine.password';
Signiant.Mst.Transfer.caCertPropName = 'com.signiant.interactivetransfer.engine.ca_certificate';
Signiant.Mst.Transfer.certValidatePropName = 'com.signiant.interactivetransfer.engine.certificatevalidate';
Signiant.Mst.Transfer.encryptPropName = 'com.signiant.interactivetransfer.engine.encrypt';
Signiant.Mst.Transfer.restartsPropName = 'com.signiant.interactivetransfer.engine.restarts';
Signiant.Mst.Transfer.aggressivePropName = 'com.signiant.interactivetransfer.engine.udp.aggressive';
Signiant.Mst.Transfer.followSymLinksPropName = 'com.signiant.interactivetransfer.engine.follow_symlinks';
Signiant.Mst.Transfer.modePropName = 'com.signiant.interactivetransfer.engine.mode';
Signiant.Mst.Transfer.urlListPropName = 'com.signiant.interactivetransfer.engine.url_list';
Signiant.Mst.Transfer.filesPropName = 'com.signiant.interactivetransfer.engine.files';
Signiant.Mst.Transfer.destinationPropName = 'com.signiant.interactivetransfer.engine.destination_dir';
Signiant.Mst.Transfer.streamsPropName = 'com.signiant.interactivetransfer.engine.streams';
Signiant.Mst.Transfer.packageidPropName = 'com.signiant.interactivetransfer.engine.header.packageid';
Signiant.Mst.Transfer.filePathHandlingModePropName = 'com.signiant.interactivetransfer.engine.dir_handling_mode';
Signiant.Mst.Transfer.fileCollisionHandlingPropName = 'com.signiant.interactivetransfer.engine.file_collision_handling';
Signiant.Mst.Transfer.jobNamePrefixPropName = 'com.signiant.interactivetransfer.engine.header.jobnameprefix';
Signiant.Mst.Transfer.serviceDataPropName = 'com.signiant.interactivetransfer.engine.service_data';
Signiant.Mst.Transfer.loggingPropName = 'com.signiant.interactivetransfer.engine.logging';
Signiant.Mst.Transfer.jobNamePrefix = 'MediaShuttleAPI_';
Signiant.Mst.Transfer.filePathModeFlat = "FLAT";
Signiant.Mst.Transfer.filePathModePath = "PATH";
Signiant.Mst.Transfer.filePathModeFull = "FULL";
Signiant.Mst.Transfer.fileCollisionModeVersion = "version";
Signiant.Mst.Transfer.fileCollisionModeOverwrite = "overwrite";
Signiant.Mst.Transfer.mxwanStr = 'mxwan://';
Signiant.Mst.Transfer.mxtcpStr = 'mxtcp://';
Signiant.Mst.Transfer.httpStr = 'http://';
Signiant.Mst.Transfer.httpPortStr = ':8080';
Signiant.Mst.Transfer.defaultTcpUdpPortStr = ':49221';
var transfer = {};
transfer.id = RFC4122_uuid();
transfer.plugin = new Signiant.Mst.Plugin(transfer.id);
transfer.transferProperties = {};
transfer.basicEventsSubscribedCallback;
transfer.progressEventsCallback;
transfer.transferErrorsEventsCallback;
transfer.transferInProgress = false;
transfer.advancedEventCallbacksMap = {};
transfer.lastTransferError;
transfer.logLevel = "INFO";
transfer.eventSubscriptionMap = {};
transfer.getTransferId = function () {
return transfer.id;
};
transfer.subscribeForPluginEvent = function (name, func) {
var eventFlag = transfer.eventSubscriptionMap[name];
if (eventFlag == null || eventFlag == undefined || eventFlag != true) {
transfer.eventSubscriptionMap[name] = true;
transfer.plugin.subscribeForEvent(name, func);
}
};
transfer.setProperty = function (name, value) {
if (name == undefined) {
throw messagesMap.getMessageForTransport('signiant.transfer.error.undefinedPropertyName');
}
if (value == undefined) {
throw messagesMap.getMessageForTransport('signiant.transfer.error.undefinedPropertyValue') + name + ".";
}
if (typeof name != "string") {
throw messagesMap.getMessageForTransport('signiant.transfer.error.invalidPropertyName');
}
transfer.transferProperties[name] = value;
};
transfer.getProperty = function (name) {
if (name == undefined) {
throw messagesMap.getMessageForTransport('signiant.transfer.error.undefinedPropertyRetrieval');
}
if (typeof name != "string") {
throw messagesMap.getMessageForTransport('signiant.transfer.error.invalidPropertyRetrieval');
}
return transfer.transferProperties[name];
};
transfer.deleteProperty = function (name) {
if (name == undefined) {
throw messagesMap.getMessageForTransport('signiant.transfer.error.undefinedPropertyDelete');
}
if (typeof name != "string") {
throw messagesMap.getMessageForTransport('signiant.transfer.error.invalidPropertyDelete');
}
if (transfer.transferProperties[name]) {
delete transfer.transferProperties[name];
}
};
transfer.setTransferProperties = function (jsonProperties) {
if (jsonProperties == undefined) {
throw messagesMap.getMessageForTransport('signiant.transfer.error.undefinedTransferProperties');
}
if (typeof jsonProperties != "object") {
throw messagesMap.getMessageForTransport('signiant.transfer.error.invalidTransferProperties');
}
transfer.transferProperties = jsonProperties;
Signiant.Mst.log('New transfer properties: ' + JSON.stringify(transfer.transferProperties) + ' for transfer with ID: ' + transfer.getTransferId());
};
transfer.getTransferProperties = function () {
return transfer.transferProperties;
};
transfer.resetTransferProperties = function () {
transfer.transferProperties = {};
};
transfer.setTrustedCA = function (trustedCACert) {
if (trustedCACert == undefined) {
throw messagesMap.getMessageForTransport('signiant.transfer.error.invalidTrustedCA');
} else {
trustedCACert = $.trim(trustedCACert);
if (trustedCACert.length == 0) {
throw messagesMap.getMessageForTransport('signiant.transfer.error.invalidTrustedCA');
}
}
trustedCACert = transfer.formatTrustedCACert(trustedCACert);
transfer.setProperty(Signiant.Mst.Transfer.caCertPropName, trustedCACert);
Signiant.Mst.log('Set-Trusted-CA: New CA certificate: ' + transfer.getProperty(Signiant.Mst.Transfer.caCertPropName) + ' for transfer with ID: ' + transfer.getTransferId());
};
transfer.getTrustedCA = function () {
return transfer.getProperty(Signiant.Mst.Transfer.caCertPropName);
};
transfer.formatTrustedCACert = function (trustedCACertRaw) {
Signiant.Mst.log("Formatting supplied CA certificate: " + trustedCACertRaw);
var pemHeader = "-----BEGIN CERTIFICATE-----";
var pemFooter = "-----END CERTIFICATE-----";
var pemCharsPerLine = 64;
var lineFeed = "\n";
var trustedCACert = "";
if (trustedCACertRaw == undefined) {
throw messagesMap.getMessageForTransport('signiant.transfer.error.invalidTrustedCA');
} else {
trustedCACertRaw = $.trim(trustedCACertRaw);
if (trustedCACertRaw.length == 0) {
throw messagesMap.getMessageForTransport('signiant.transfer.error.invalidTrustedCA');
}
}
var indexOfPemHeader = trustedCACertRaw.indexOf(pemHeader, 0);
if (indexOfPemHeader != 0) {
Signiant.Mst.log("Supplied CA certificate is missing the PEM header!");
throw messagesMap.getMessageForTransport('signiant.transfer.error.invalidTrustedCA');
} else {
var indexOfPemFooter = trustedCACertRaw.indexOf(pemFooter, 0);
if (indexOfPemFooter <= 0 || (indexOfPemFooter < (trustedCACertRaw.length - pemFooter.length))) {
Signiant.Mst.log("Supplied CA certificate is missing the PEM footer or the footer is in the wrong place!");
throw messagesMap.getMessageForTransport('signiant.transfer.error.invalidTrustedCA');
} else {
trustedCACertRaw = trustedCACertRaw.substring(pemHeader.length, (trustedCACertRaw.length - pemFooter.length));
trustedCACert += pemHeader + lineFeed;
var numBase64CharsInCurrLine = 0;
for (var i = 0; i < trustedCACertRaw.length; ++i) {
var certChar = trustedCACertRaw.charAt(i);
if (isBase64Char(certChar)) {
trustedCACert += certChar;
numBase64CharsInCurrLine++;
}
if (numBase64CharsInCurrLine != 0 && (numBase64CharsInCurrLine % pemCharsPerLine) == 0) {
trustedCACert += lineFeed;
numBase64CharsInCurrLine = 0;
}
}
trustedCACert += lineFeed;
trustedCACert += pemFooter;
}
}
return trustedCACert;
};
transfer.setServer = function (server, serverRelayArr) {
var mxwanProtocolStr = '';
var mxtcpProtocolStr = '';
var httpProtocolStr = '';
if (server == undefined || server == '') {
throw messagesMap.getMessageForTransport('signiant.transfer.error.invalidServer');
}
var serverProtocolList = transfer.getServer();
if (serverProtocolList != undefined) {
var serverUrlArray = serverProtocolList.split("\n");
if (serverRelayArr == undefined || serverRelayArr == '') {
if (serverProtocolList.indexOf(server) !== -1) {
return;
}
for (var i = 0; i < serverUrlArray.length; i++) {
if (serverUrlArray[i].indexOf(Signiant.Mst.Transfer.mxwanStr) !== -1)
mxwanProtocolStr = serverUrlArray[i] + "|" + Signiant.Mst.Transfer.mxwanStr + server;
if (serverUrlArray[i].indexOf(Signiant.Mst.Transfer.mxtcpStr) !== -1)
mxtcpProtocolStr = serverUrlArray[i] + "|" + Signiant.Mst.Transfer.mxtcpStr + server;
if (serverUrlArray[i].indexOf(Signiant.Mst.Transfer.httpStr) !== -1)
httpProtocolStr = serverUrlArray[i] + "|" + Signiant.Mst.Transfer.httpStr + server + Signiant.Mst.Transfer.httpPortStr;
}
} else {
for (var i = 0; i < serverUrlArray.length; i++) {
if (serverUrlArray[i].indexOf(Signiant.Mst.Transfer.mxwanStr) !== -1) {
serverProtocol = transfer.generateServerProtocolStr(server, serverRelayArr, Signiant.Mst.Transfer.mxwanStr, Signiant.Mst.Transfer.defaultTcpUdpPortStr);
if (!transfer.doesRelayExistInServerList(serverUrlArray[i], serverProtocol)) {
mxwanProtocolStr = serverUrlArray[i] + "|" + serverProtocol;
} else {
return;
}
}
if (serverUrlArray[i].indexOf(Signiant.Mst.Transfer.mxtcpStr) !== -1) {
serverProtocol = transfer.generateServerProtocolStr(server, serverRelayArr, Signiant.Mst.Transfer.mxtcpStr, Signiant.Mst.Transfer.defaultTcpUdpPortStr);
if (!transfer.doesRelayExistInServerList(serverUrlArray[i], serverProtocol)) {
mxtcpProtocolStr = serverUrlArray[i] + "|" + serverProtocol;
} else {
return;
}
}
if (serverUrlArray[i].indexOf(Signiant.Mst.Transfer.httpStr) !== -1) {
serverProtocol = transfer.generateServerProtocolStr(server, serverRelayArr, Signiant.Mst.Transfer.httpStr, Signiant.Mst.Transfer.httpPortStr);
if (!transfer.doesRelayExistInServerList(serverUrlArray[i], serverProtocol)) {
httpProtocolStr = serverUrlArray[i] + "|" + serverProtocol;
} else {
return;
}
}
}
}
} else {
if (serverRelayArr == undefined || serverRelayArr == '') {
mxwanProtocolStr = Signiant.Mst.Transfer.mxwanStr + server;
mxtcpProtocolStr = Signiant.Mst.Transfer.mxtcpStr + server;
httpProtocolStr = Signiant.Mst.Transfer.httpStr + server + Signiant.Mst.Transfer.httpPortStr;
} else {
mxwanProtocolStr = transfer.generateServerProtocolStr(server, serverRelayArr, Signiant.Mst.Transfer.mxwanStr, Signiant.Mst.Transfer.defaultTcpUdpPortStr);
mxtcpProtocolStr = transfer.generateServerProtocolStr(server, serverRelayArr, Signiant.Mst.Transfer.mxtcpStr, Signiant.Mst.Transfer.defaultTcpUdpPortStr);
httpProtocolStr = transfer.generateServerProtocolStr(server, serverRelayArr, Signiant.Mst.Transfer.httpStr, Signiant.Mst.Transfer.httpPortStr);
}
}
serverProtocolList = mxwanProtocolStr + '\n' + mxtcpProtocolStr + '\n' + httpProtocolStr;
transfer.setProperty(Signiant.Mst.Transfer.urlListPropName, serverProtocolList);
Signiant.Mst.log('Set-Server: ' + transfer.getProperty(Signiant.Mst.Transfer.urlListPropName) + ' for transfer with ID: ' + transfer.getTransferId());
};
transfer.getServer = function () {
return transfer.getProperty(Signiant.Mst.Transfer.urlListPropName);
};
transfer.generateServerProtocolStr = function (server, serverRelayArr, protocolStr, portStr) {
var serverProtocolStr = '';
var endOfLineCounter = 1;
arrLength = serverRelayArr.length;
for (var i = 0; i < arrLength; i++) {
serverRelay = '@' + serverRelayArr[i] + portStr;
serverProtocolStr += protocolStr + server + serverRelay;
if (endOfLineCounter != arrLength)
serverProtocolStr += '|';
endOfLineCounter++;
}
return serverProtocolStr;
};
transfer.doesRelayExistInServerList = function (existingServerRelays, newServerRelay) {
if (existingServerRelays.indexOf(newServerRelay) !== -1)
return true;
};
transfer.clearServerList = function () {
try {
transfer.deleteProperty(Signiant.Mst.Transfer.urlListPropName);
} catch (e) {
Signiant.Mst.log('Clear-Server-List: Failed to clear server list with transfer ID: ' + transfer.getTransferId());
Signiant.Mst.log(e);
throw messagesMap.getMessageForTransport('signiant.transfer.error.failedToClearServerList');
}
};
transfer.setCredentials = function (username, password) {
if (username == undefined) {
throw messagesMap.getMessageForTransport('signiant.transfer.error.invalidUsername');
}
if (password == undefined) {
throw messagesMap.getMessageForTransport('signiant.transfer.error.invalidPassword');
}
transfer.setProperty(Signiant.Mst.Transfer.usernamePropName, username);
transfer.setProperty(Signiant.Mst.Transfer.passwordPropName, password);
Signiant.Mst.log('Set-Credentials: Supplied username: ' + username + ';Set username: ' + transfer.getProperty(Signiant.Mst.Transfer.usernamePropName) + ' for transfer with ID: ' + transfer.getTransferId());
};
transfer.setDestinationDir = function (destinationDir) {
if (destinationDir == undefined || destinationDir.length == 0) {
throw messagesMap.getMessageForTransport('signiant.transfer.error.invalidDestinationDir');
}
transfer.setProperty(Signiant.Mst.Transfer.destinationPropName, destinationDir);
Signiant.Mst.log('Set-Destination-Dir: New destination directory: ' + transfer.getProperty(Signiant.Mst.Transfer.destinationPropName) + ' for transfer with ID: ' + transfer.getTransferId());
};
transfer.getDestinationDir = function () {
return transfer.getProperty(Signiant.Mst.Transfer.destinationPropName);
};
transfer.setLogLevel = function (level) {
var validNewPluginLogLevel = transfer.setPluginLogLevel(level);
var newTransferLogLevel = "fine";
if ("INFO" === validNewPluginLogLevel.toUpperCase()) {
newTransferLogLevel = "fine";
} else if ("DEBUG" === validNewPluginLogLevel.toUpperCase()) {
newTransferLogLevel = "finest";
}
transfer.logLevel = validNewPluginLogLevel;
transfer.setProperty(Signiant.Mst.Transfer.loggingPropName, newTransferLogLevel);
};
transfer.setPluginLogLevel = function (level) {
var validNewLogLevel = transfer.plugin.setLogLevel(level);
if (!validNewLogLevel || validNewLogLevel == null || validNewLogLevel.length == 0) {
var exceptionMsg = messagesMap.getMessageForTransport('signiant.transfer.error.invalidLogLevel');
exceptionMsg += level;
throw exceptionMsg;
}
return validNewLogLevel;
};
transfer.getLogLevel = function () {
return transfer.logLevel;
};
transfer.setFiles = function (fileNameArray) {
if (fileNameArray == undefined || fileNameArray.length == 0) {
throw messagesMap.getMessageForTransport('signiant.transfer.error.undefinedListOfFiles');
}
if (!fileNameArray.push) {
throw messagesMap.getMessageForTransport('signiant.transfer.error.invalidListOfFiles');
}
var currentFiles = transfer.getProperty(Signiant.Mst.Transfer.filesPropName);
var currentFilesArray = [];
var newFilesArray = [];
if (currentFiles == undefined) {
currentFiles = '';
} else {
currentFilesArray = currentFiles.split('\n');
}
var fileExists = false;
for (var i = 0; i < fileNameArray.length; ++i, fileExists = false) {
fileNameArray[i] = Signiant.Mst.trimFileStr(fileNameArray[i]);
for (var j = 0; j < currentFilesArray.length; ++j) {
if (fileNameArray[i] == currentFilesArray[j]) {
fileExists = true;
break;
}
}
if (fileExists == false) {
newFilesArray.push(fileNameArray[i]);
}
}
for (var k = 0; k < newFilesArray.length; ++k) {
if (currentFiles.length == 0) {
currentFiles += newFilesArray[k];
} else {
currentFiles += ('\n' + newFilesArray[k]);
}
}
transfer.setProperty(Signiant.Mst.Transfer.filesPropName, currentFiles);
};
transfer.getFiles = function () {
var files = transfer.getProperty(Signiant.Mst.Transfer.filesPropName);
var filesArray = [];
if (files != undefined)
filesArray = files.split('\n');
return filesArray;
};
transfer.removeFromFilesProperty = function (fileArray) {
try {
for (var k = 0; k < fileArray.length; k++) {
var array = transfer.getFiles();
var index = -1;
for (var i = 0, j = array.length; i < j; i++) {
if (array[i] === fileArray[k]) {
index = i;
break;
}
};
if (index != -1) {
array.splice(index, 1);
transfer.deleteFilesProperty();
if (array.length != 0) {
transfer.setFiles(array);
}
Signiant.Mst.log('Selected file (' + fileArray[k] + ') has been cleared from the file list for transfer with ID: ' + transfer.getTransferId());
} else {
Signiant.Mst.log('Selected file (' + fileArray[k] + ') to clear was not in the file list for transfer with ID: ' + transfer.getTransferId());
}
}
} catch (e) {
Signiant.Mst.log('Remove-From-Files-Property: Failed to remove specifed files from Files property with transfer ID: ' + transfer.getTransferId());
Signiant.Mst.log(e);
throw messagesMap.getMessageForTransport('signiant.transfer.error.failedToRemoveFilesFromProperty');
}
};
transfer.deleteFilesProperty = function () {
transfer.deleteProperty(Signiant.Mst.Transfer.filesPropName);
};
transfer.clearAllFiles = function () {};
transfer.clearFiles = function (filesArray) {};
transfer.retry = function () {};
transfer.isInProgress = function () {
return transfer.transferInProgress;
};
transfer.cancel = function () {
try {
if (transfer.isInProgress()) {
transfer.plugin.cancelTransfer();
Signiant.Mst.log("Transfer canceled for transfer ID: " + transfer.getTransferId());
return;
}
} catch (e) {
Signiant.Mst.log(e);
throw messagesMap.getMessageForTransport('signiant.transfer.error.failedToCancelTransfer');
}
throw messagesMap.getMessageForTransport('signiant.transfer.error.noTransferToCancel');
};
transfer.setJobNamePrefix = function (value) {
if (value == undefined || value.length == 0) {
throw messagesMap.getMessageForTransport('signiant.transfer.error.jobNamePrefix.failure');
}
if (value.match(/^[a-zA-Z0-9_]{1,32}$/)) {
transfer.setProperty(Signiant.Mst.Transfer.jobNamePrefixPropName, value);
Signiant.Mst.log('Set-JobName-Prefix : New Job Name Prefix : ' + transfer.getProperty(Signiant.Mst.Transfer.jobNamePrefixPropName) + ' for transfer with ID: ' + transfer.getTransferId());
} else {
Signiant.Mst.log('Failed to set the Job Name Prefix');
throw messagesMap.getMessage('signiant.transfer.error.jobNamePrefix.invalidJobNamePrefix');
}
};
transfer.setServiceData = function (value) {
if (value == undefined || value.length == 0) {
throw messagesMap.getMessageForTransport('signiant.transfer.error.serviceData.failure');
}
transfer.setProperty(Signiant.Mst.Transfer.serviceDataPropName, value);
Signiant.Mst.log('Set-Service-Data : New Service Data : ' + transfer.getProperty(Signiant.Mst.Transfer.serviceDataPropName) + ' for transfer with ID: ' + transfer.getTransferId());
};
transfer.getServiceData = function () {
return transfer.getProperty(Signiant.Mst.Transfer.serviceDataPropName);
};
transfer.subscribeForPluginEvents = function () {
transfer.subscribeForPluginEvent(Signiant.Mst.transferStartedEventName, transfer.handleTransferStartedEvent);
transfer.subscribeForPluginEvent(Signiant.Mst.preTransferEventName, transfer.handlePreTransfer);
transfer.subscribeForPluginEvent(Signiant.Mst.connectionStatusChangeEventName, transfer.handleConnectionStatusChange);
transfer.subscribeForPluginEvent(Signiant.Mst.connectionStatusComponentQueuedEventName, transfer.handleConnectionStatusComponentQueued);
transfer.subscribeForPluginEvent(Signiant.Mst.preFileEventName, transfer.handlePreFileEvent);
transfer.subscribeForPluginEvent(Signiant.Mst.warnEventName, transfer.handleTransferErrors);
transfer.subscribeForPluginEvent(Signiant.Mst.transferProgressEventName, transfer.handleTransferProgress);
transfer.subscribeForPluginEvent(Signiant.Mst.postTransferEventName, transfer.handlePostTransferEvent);
transfer.subscribeForPluginEvent(Signiant.Mst.transferFailureEventName, transfer.handleTransferFailure);
transfer.subscribeForPluginEvent(Signiant.Mst.exceptionEventName, transfer.handleTransferException);
transfer.subscribeForPluginEvent(Signiant.Mst.downloadDestinationChosenEventName, transfer.handleDownloadFolderChosen);
transfer.subscribeForPluginEvent(Signiant.Mst.uploadFilesChosenEventName, transfer.handleUploadFilesChosen);
transfer.subscribeForPluginEvent(Signiant.Mst.uploadFilesProcessedEventName, transfer.handleUploadFilesProcessed);
transfer.subscribeForPluginEvent(Signiant.Mst.tooManyUploadFilesChosenEventName, transfer.handleTooManyFilesChosen);
};
transfer.handleTransferStartedEvent = function () {
Signiant.Mst.log('plugin_transferStarted event is fired for transfer with ID: ' + transfer.getTransferId());
try {
if (transfer.basicEventsSubscribedCallback != undefined) {
transfer.basicEventsSubscribedCallback(transfer, Signiant.Mst.transferStartedEvent, messagesMap.getMessageForTransport('signiant.transfer.status.transferStarted'));
}
if (transfer.advancedEventCallbacksMap[Signiant.Mst.transferStartedEventName]) {
transfer.advancedEventCallbacksMap[Signiant.Mst.transferStartedEventName](transfer);
}
} catch (e) {
Signiant.Mst.log('Handle-Transfer-Started-Event: Failed to call callback for transfer-started event for transfer with ID: ' + transfer.getTransferId());
Signiant.Mst.log(e);
throw messagesMap.getMessageForTransport('signiant.transfer.error.callbackFailedForXferStart');
}
transfer.transferInProgress = true;
};
transfer.handlePreTransfer = function (protocolName) {
Signiant.Mst.log('plugin_preTransferevent event is fired for transfer with ID: ' + transfer.getTransferId() + ' ProtocolName: ' + protocolName);
try {
if (transfer.basicEventsSubscribedCallback != undefined) {
transfer.basicEventsSubscribedCallback(transfer, Signiant.Mst.preTransferEvent, messagesMap.getMessageForTransport('signiant.transfer.status.preTransfer'), protocolName);
}
if (transfer.advancedEventCallbacksMap[Signiant.Mst.preTransferEventName]) {
transfer.advancedEventCallbacksMap[Signiant.Mst.preTransferEventName](transfer, protocolName);
}
} catch (e) {
Signiant.Mst.log('Handle-Pre-Transfer-Event: Failed to call callback for pre-transfer event for transfer with ID: ' + transfer.getTransferId());
Signiant.Mst.log(e);
throw messagesMap.getMessageForTransport('signiant.transfer.error.callbackFailedForPreXfer');
}
};
transfer.handleConnectionStatusChange = function (status) {
Signiant.Mst.log('plugin_connectionStatusChange event is fired for transfer with ID: ' + transfer.getTransferId() + ' Status: ' + status);
var message = '';
if (status == 'CONNECTING') {
Signiant.Mst.connectionStatusEvent = 'CONNECTING';
message = messagesMap.getMessageForTransport('signiant.transfer.status.connecting');
} else if (status == 'CONNECTED') {
Signiant.Mst.connectionStatusEvent = 'CONNECTED';
message = messagesMap.getMessageForTransport('signiant.transfer.status.connected');
} else if (status == 'TRANSFERRING') {
Signiant.Mst.connectionStatusEvent = 'TRANSFERRING';
message = messagesMap.getMessageForTransport('signiant.transfer.status.transferring');
} else if (status == 'DISCONNECTING') {
Signiant.Mst.connectionStatusEvent = 'DISCONNECTING';
message = messagesMap.getMessageForTransport('signiant.transfer.status.disconnecting');
} else if (status == 'DISCONNECTED') {
Signiant.Mst.connectionStatusEvent = 'DISCONNECTED';
message = messagesMap.getMessageForTransport('signiant.transfer.status.disconnected');
} else if (status == 'COMPONENT_QUEUED') {
Signiant.Mst.connectionStatusEvent = 'CONNECTION_QUEUED';
message = messagesMap.getMessageForTransport('signiant.transfer.status.connectionStatusComponentQueued');
}
try {
if (transfer.basicEventsSubscribedCallback != undefined) {
transfer.basicEventsSubscribedCallback(transfer, Signiant.Mst.connectionStatusEvent, message);
}
if (transfer.advancedEventCallbacksMap[Signiant.Mst.connectionStatusChangeEventName]) {
transfer.advancedEventCallbacksMap[Signiant.Mst.connectionStatusChangeEventName](transfer, status);
}
} catch (e) {
Signiant.Mst.log('Handle-Connection-Status-Event: Failed to call callback for connection-status event for transfer with ID: ' + transfer.getTransferId());
Signiant.Mst.log(e);
throw messagesMap.getMessageForTransport('signiant.transfer.error.callbackFailedForConnStatus');
}
};
transfer.handleConnectionStatusComponentQueued = function (etaTime) {
Signiant.Mst.log('plugin_connectionStatusComponentQueued event is fired for transfer with ID: ' + transfer.getTransferId() + ', EtaTime: ' + etaTime);
try {
if (transfer.basicEventsSubscribedCallback != undefined) {
transfer.basicEventsSubscribedCallback(transfer, Signiant.Mst.connectionStatusComponentQueuedEvent, messagesMap.getMessageForTransport('signiant.transfer.status.connectionStatusComponentQueued'), etaTime);
}
if (transfer.advancedEventCallbacksMap[Signiant.Mst.connectionStatusComponentQueuedEventName]) {
transfer.advancedEventCallbacksMap[Signiant.Mst.connectionStatusComponentQueuedEventName](transfer, etaTime);
}
} catch (e) {
Signiant.Mst.log('Handle-Connection-Status-Component-Queued-Event: Failed to call callback for connection-status-component-queued event for transfer with ID: ' + transfer.getTransferId());
Signiant.Mst.log(e);
throw messagesMap.getMessageForTransport('signiant.transfer.error.callbackFailedForConnStatusCompQueued');
}
};
transfer.handlePreFileEvent = function (fileName) {
Signiant.Mst.log('plugin_preFile event is fired for transfer with ID: ' + transfer.getTransferId() + ' FileName: ' + fileName);
try {
if (transfer.basicEventsSubscribedCallback != undefined) {
transfer.basicEventsSubscribedCallback(transfer, Signiant.Mst.transferPreFileEvent, messagesMap.getMessageForTransport('signiant.transfer.status.preFile'), fileName);
}
if (transfer.advancedEventCallbacksMap[Signiant.Mst.preFileEventName]) {
transfer.advancedEventCallbacksMap[Signiant.Mst.preFileEventName](transfer, fileName);
}
} catch (e) {
Signiant.Mst.log('Handle-Pre-File-Event: Failed to call callback for pre-file event for transfer with ID: ' + transfer.getTransferId());
Signiant.Mst.log(e);
throw messagesMap.getMessageForTransport('signiant.transfer.error.callbackFailedForXferPrefile');
}
};
transfer.handleTransferErrors = function (pluginErrorCode, shortMessage, propertyName) {
Signiant.Mst.log('plugin_warn event is fired for transfer with ID: ' + transfer.getTransferId() + ' Message: ' + pluginErrorCode + ' shortMessage: ' + shortMessage + ' propertyName:' + propertyName);
try {
var errorMessage = messagesMap.getMessageForTransport(pluginErrorCode);
Signiant.Mst.log('ErrorMessage: ' + errorMessage);
transfer.lastTransferError = pluginErrorCode;
if (transfer.transferErrorsEventsCallback != undefined) {
if (pluginErrorCode.match(/^((?!PropertyException-INJECTED_(FILE_ENTRIES|DEST_DIR)_FOUND).)*$/)) {
var errorCode = transfer.getExternalErrorCode(pluginErrorCode);
transfer.transferErrorsEventsCallback(transfer, errorCode, errorMessage, propertyName);
}
}
if (transfer.advancedEventCallbacksMap[Signiant.Mst.warnEventName]) {
transfer.advancedEventCallbacksMap[Signiant.Mst.warnEventName](transfer, pluginErrorCode, shortMessage, propertyName);
}
if (pluginErrorCode == 'PropertyException-INJECTED_FILE_ENTRIES_FOUND') {
if (transfer.basicEventsSubscribedCallback != undefined) {
transfer.basicEventsSubscribedCallback(transfer, Signiant.Mst.injectedFileEntriesFoundEvent, messagesMap.getMessageForTransport(pluginErrorCode));
}
} else if (pluginErrorCode == 'PropertyException-INJECTED_DEST_DIR_FOUND') {
if (transfer.basicEventsSubscribedCallback != undefined) {
transfer.basicEventsSubscribedCallback(transfer, Signiant.Mst.injectedDestDirFoundEvent, messagesMap.getMessageForTransport(pluginErrorCode));
}
}
} catch (e) {
Signiant.Mst.log('Handle-Transfer-Errors: Failed to handle errors for transfer with ID: ' + transfer.getTransferId());
Signiant.Mst.log(e);
throw messagesMap.getMessageForTransport('signiant.transfer.error.failedToHandleErrors');
}
};
transfer.getLastError = function () {
if (transfer.lastTransferError == undefined) {
transfer.lastTransferError = "";
}
return transfer.lastTransferError;
};
transfer.resetLastError = function () {
transfer.lastTransferError = "";
};
transfer.getExternalErrorCode = function (pluginErrorCode) {
if (pluginErrorCode == 'InvalidAuthenticationException-INCOMPLETE_USER_CREDENTIALS') {
return Signiant.Mst.incompleteUserCredentials;
} else if (pluginErrorCode == 'PropertyException-FILE_ENTRY_NOT_FOUND') {
return Signiant.Mst.noFilesForUploadCode;
} else if (pluginErrorCode == 'PropertyException-NO_FILES_TO_DOWNLOAD') {
return Signiant.Mst.noFilesForDownloadCode;
} else if (pluginErrorCode == 'PropertyException-NO_DESTINATION_DIR_DEFINED') {
return Signiant.Mst.noDestinationFolderCode;
} else if (pluginErrorCode == 'ConnectionAbortedException-READ_CHANNEL_FAILURE') {
return Signiant.Mst.connectionFailureCode;
} else if (pluginErrorCode == 'InvalidAuthenticationException-INVALID_CREDENTIALS') {
return Signiant.Mst.invalidCredentialsCode;
} else if (pluginErrorCode == 'PropertyException-INVALID_DESTINATION_DIR') {
return Signiant.Mst.invalidDestinationDirectory;
} else {
return Signiant.Mst.transferErrorsEvent;
}
};
transfer.handleTransferProgress = function (bytesSent, totalBytes, estimatedTimeRemaining, formattedRate, rawTransferRate) {
try {
Signiant.Mst.log('plugin_transferProgress event is fired for transfer with ID: ' + transfer.getTransferId() + '. ' + bytesSent + ' (bytes sent), ' +
totalBytes + ' (total bytes), ' + estimatedTimeRemaining + ' (time remaining), ' +
formattedRate + ' (rate)');
if (transfer.progressEventsCallback != undefined) {
transfer.progressEventsCallback(transfer, bytesSent, totalBytes, estimatedTimeRemaining);
}
if (transfer.advancedEventCallbacksMap[Signiant.Mst.transferProgressEventName]) {
transfer.advancedEventCallbacksMap[Signiant.Mst.transferProgressEventName](transfer, bytesSent, totalBytes, estimatedTimeRemaining, formattedRate, rawTransferRate);
}
} catch (e) {
Signiant.Mst.log('Handle Transfer Progress: Failed to handle transfer-progress event for transfer with ID: ' + transfer.getTransferId());
Signiant.Mst.log(e);
throw messagesMap.getMessageForTransport('signiant.transfer.error.failedToHandleXferProgress');
}
};
transfer.handlePostTransferEvent = function (status, destination, sandbox, transferSize, logfile, fileNamePairsAfterCollisionJSONArr) {
Signiant.Mst.log('plugin_postTransfer event is fired for transfer with ID: ' + transfer.getTransferId() + '. Status: ' + status);
try {
if (transfer.basicEventsSubscribedCallback != undefined) {
if (status == 'FAILURE') {
transfer.basicEventsSubscribedCallback(transfer, Signiant.Mst.transferErrorsEvent, messagesMap.getMessageForTransport('signiant.transfer.status.transferFailed'));
} else if (status == 'CANCELLED') {
transfer.basicEventsSubscribedCallback(transfer, Signiant.Mst.transferCanceledEvent, messagesMap.getMessageForTransport('signiant.transfer.status.transferCanceled'));
} else {
transfer.basicEventsSubscribedCallback(transfer, Signiant.Mst.transferCompletedEvent, messagesMap.getMessageForTransport('signiant.transfer.status.transferSuccessful'));
}
}
if (transfer.advancedEventCallbacksMap[Signiant.Mst.postTransferEventName]) {
transfer.advancedEventCallbacksMap[Signiant.Mst.postTransferEventName](transfer, status, destination, sandbox, transferSize, logfile, fileNamePairsAfterCollisionJSONArr);
}
} catch (e) {
Signiant.Mst.log('Handle-Post-Transfer-Event: Failed to call callback for post-transfer event for transfer with ID: ' + transfer.getTransferId());
Signiant.Mst.log(e);
throw messagesMap.getMessageForTransport('signiant.transfer.error.callbackFailedForPostXfer');
}
transfer.reportTransferStatistics();
transfer.transferInProgress = false;
};
transfer.reportTransferStatistics = function () {
Signiant.Mst.log('Reporting statistics for transfer: ' + transfer.getTransferId());
try {
var statsString = transfer.plugin.getTransferStats();
var statsJSON = JSON.parse(statsString);
statsJSON['apiKey'] = Signiant.Mst.apiKey;
statsString = JSON.stringify(statsJSON);
if ('withCredentials' in new XMLHttpRequest()) {
transfer.reportTransferStatisticsForNonIE8_9_Browsers(statsString);
} else {
transfer.reportTransferStatisticsForIE8_9_Browsers(statsString);
}
} catch (e) {
Signiant.Mst.log('Failed to report the statistics for transfer: ' + transfer.getTransferId() + " because of " + e);
}
};
transfer.reportTransferStatisticsForIE8_9_Browsers = function (statsString) {
var url = Signiant.Mst.transferStatsUrl;
url = adjustCORSURLProtocolForIE8_9_Browsers(url);
if (isHttpProtocol()) {
var xdr = new XDomainRequest();
xdr.open("POST", url);
xdr.onload = function () {
Signiant.Mst.log('Successfully reported transfer statistics.');
};
xdr.onprogress = function () {};
xdr.ontimeout = function () {};
xdr.onerror = function () {
Signiant.Mst.log('Failed to report transfer statistics.');
};
setTimeout(function () {
xdr.send(statsString);
}, 0);
} else {
var xhrForPlugin;
try {
xhrForPlugin = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
xhrForPlugin = false;
}
if (xhrForPlugin) {
xhrForPlugin.onreadystatechange = function () {
if (xhrForPlugin.readyState == 4) {
if (xhrForPlugin.status == '200' && xhrForPlugin.statusText == 'OK') {
Signiant.Mst.log('Successfully reported transfer statistics.');
} else {
Signiant.Mst.log('Failed to report transfer statistics.');
}
}
};
xhrForPlugin.open("POST", url);
xhrForPlugin.setRequestHeader("Content-Type", "application/json");
xhrForPlugin.send(statsString);
} else {
Signiant.Mst.log('Failed to report transfer statistics.');
return;
}
}
};
transfer.reportTransferStatisticsForNonIE8_9_Browsers = function (statsString) {
jQuery.support.cors = true;
var xhr = getNewXMLHttpRequest();
xhr.onerror = transfer.handleReportTransferStatisticsFailure;
xhr.onreadystatechange = function () {
if (xhr.readyState == 4) {
if (xhr.status == '200' && xhr.statusText == 'OK') {
transfer.handleReportTransferStatisticsSuccess(JSON.parse(xhr.responseText), "SUCCESS", xhr);
} else {
transfer.handleReportTransferStatisticsFailure(xhr);
}
}
};
xhr.open("POST", Signiant.Mst.transferStatsUrl, true);
xhr.send(statsString);
};
transfer.handleReportTransferStatisticsSuccess = function (response, status, jqXHR) {
Signiant.Mst.log('Successfully reported transfer statistics.');
};
transfer.handleReportTransferStatisticsFailure = function (jqXHR) {
Signiant.Mst.log('Failed to report transfer statistics.');
};
transfer.handleTransferFailure = function () {
Signiant.Mst.log('plugin_transferFailure event is fired for transfer with ID: ' + transfer.getTransferId());
try {
if (transfer.transferErrorsEventsCallback != undefined) {
transfer.transferErrorsEventsCallback(transfer, Signiant.Mst.transferErrorsEvent, messagesMap.getMessageForTransport('signiant.transfer.status.transferFailed'));
}
if (transfer.advancedEventCallbacksMap[Signiant.Mst.transferFailureEventName]) {
transfer.advancedEventCallbacksMap[Signiant.Mst.transferFailureEventName](transfer);
}
} catch (e) {
Signiant.Mst.log('Handle-Transfer-Failure: Failed to handle transfer errors event for transfer with ID: ' + transfer.getTransferId());
Signiant.Mst.log(e);
throw messagesMap.getMessageForTransport('signiant.transfer.error.failedToHandleErrors');
}
};
transfer.handleTransferException = function (message) {
Signiant.Mst.log("plugin_exception: " + message);
try {
if (transfer.basicEventsSubscribedCallback != undefined) {
transfer.basicEventsSubscribedCallback(transfer, Signiant.Mst.transferExceptionEvent, messagesMap.getMessage('signiant.transfer.transferException'), message);
}
if (transfer.advancedEventCallbacksMap[Signiant.Mst.exceptionEventName]) {
transfer.advancedEventCallbacksMap[Signiant.Mst.exceptionEventName](transfer, message);
}
} catch (e) {
Signiant.Mst.log('Handle-Transfer-Exception: Failed to handle transfer exception event for transfer with ID: ' + transfer.getTransferId());
Signiant.Mst.log(e);
throw messagesMap.getMessageForTransport('signiant.transfer.error.failedToHandleException');
}
};
transfer.handleDownloadFolderChosen = function (folder) {}, transfer.handleUploadFilesChosen = function (filesJSON) {}, transfer.handleUploadFilesProcessed = function (files) {
Signiant.Mst.log('plugin_uploadFilesProcessed event is fired for transfer with ID: ' + transfer.getTransferId() + ' .Files: ' + files);
try {
if (files.length > 0 && files != "[]") {
Signiant.Mst.log('Transfer - uploadFilesProcessed : ' + files + ' for transfer with ID: ' + transfer.getTransferId());
}
if (transfer.advancedEventCallbacksMap[Signiant.Mst.uploadFilesProcessedEventName]) {
transfer.advancedEventCallbacksMap[Signiant.Mst.uploadFilesProcessedEventName](transfer, files);
}
} catch (e) {
Signiant.Mst.log('Handle-Transfer-Failure: Failed to handle errors for transfer with ID: ' + transfer.getTransferId());
Signiant.Mst.log(e);
throw messagesMap.getMessageForTransport('signiant.transfer.error.failedToHandleUploadFilesProcessed');
}
};
transfer.handleTooManyFilesChosen = function () {}, transfer.subscribeForBasicEvents = function (callback) {
try {
transfer.basicEventsSubscribedCallback = callback;
} catch (e) {
Signiant.Mst.log('Subscribe-Basic-Events: Failed to subscribe basic events for transfer with ID: ' + transfer.getTransferId());
Signiant.Mst.log(e);
throw messagesMap.getMessageForTransport('signiant.transfer.error.failedToSubscribeBasicEvents');
}
};
transfer.subscribeForTransferProgress = function (callback) {
try {
transfer.progressEventsCallback = callback;
Signiant.Mst.log('Subscribe-For-Transfer-Progress: Subscribed function for transfer-progress events for transfer with ID: ' +
transfer.getTransferId());
} catch (e) {
Signiant.Mst.log('Transfer Progress: Failed to subscribe the caller for transfer-progress events for transfer with ID: ' + transfer.getTransferId());
Signiant.Mst.log(e);
throw messagesMap.getMessageForTransport('signiant.transfer.error.failedToSubscribeXferProgress');
}
};
transfer.subscribeForTransferErrors = function (callback) {
try {
transfer.transferErrorsEventsCallback = callback;
Signiant.Mst.log('Subscribe-For-Transfer-Errors: Subscribed function for transfer-errors events for transfer with ID ' +
transfer.getTransferId());
} catch (e) {
Signiant.Mst.log('Subscribe-Transfer-Errors: Failed to subscribe the caller for transfer-errors event for transfer with ID: ' + transfer.getTransferId());
Signiant.Mst.log(e);
throw messagesMap.getMessageForTransport('signiant.transfer.error.failedToSubscribeXferErrors');
}
};
transfer.subscribeForAdvancedEvents = function (eventName, callback) {
if (callback == undefined)
throw messagesMap.getMessageForTransport('signiant.transfer.error.invalidCallback');
Signiant.Mst.validateEventName(eventName);
try {
transfer.advancedEventCallbacksMap[eventName] = callback;
} catch (e) {
Signiant.Mst.log('Subscribe-Advanced-Events: Failed to subscribe for advanced-events for transfer with ID: ' + transfer.getTransferId());
Signiant.Mst.log(e);
throw messagesMap.getMessageForTransport('signiant.transfer.error.failedToSubscribeForAdvEvent' + eventName);
}
};
transfer.isIEProtectedModeOn = function () {
return transfer.plugin.isIEProtectedModeOn();
};
transfer.setDefaults = function () {
transfer.setProperty(Signiant.Mst.Transfer.certValidatePropName, 'true');
transfer.setProperty(Signiant.Mst.Transfer.encryptPropName, 'STRONG');
transfer.setProperty(Signiant.Mst.Transfer.restartsPropName, '4');
transfer.setProperty(Signiant.Mst.Transfer.aggressivePropName, '2');
transfer.setProperty(Signiant.Mst.Transfer.followSymLinksPropName, 'true');
transfer.setProperty(Signiant.Mst.Transfer.streamsPropName, '4');
transfer.setProperty(Signiant.Mst.Transfer.fileCollisionHandlingPropName, Signiant.Mst.Transfer.fileCollisionModeVersion);
transfer.setProperty(Signiant.Mst.Transfer.jobNamePrefixPropName, Signiant.Mst.Transfer.jobNamePrefix);
transfer.setLogLevel("INFO");
};
transfer.setDefaults();
return transfer;
};
Signiant.Mst.Upload = function () {
var transfer = new Signiant.Mst.Transfer();
transfer.filesSelectedCallback;
transfer.startUpload = function () {
try {
transfer.resetLastError();
if (Signiant.Mst.isValidAPIKey && Signiant.Mst.isPluginInstalled) {
transfer.transferProperties[Signiant.Mst.Transfer.modePropName] = 'SEND';
transfer.subscribeForPluginEvents();
transfer.plugin.setMaxUploadFiles(Signiant.Mst.maxNumberFiles);
transfer.plugin.uploadFiles(transfer.getTransferProperties());
} else {
throw Signiant.Mst.validateKeyErrorMessage;
}
} catch (e) {
Signiant.Mst.log('Start-Upload: Failed to start upload with transfer ID: ' + transfer.getTransferId());
Signiant.Mst.log(e);
throw messagesMap.getMessageForTransport('signiant.transfer.error.failedToUpload');
}
};
transfer.calcSelectedFileSize = function () {
try {
transfer.subscribeForPluginEvent(Signiant.Mst.uploadFilesProcessedEventName, transfer.handleUploadFilesProcessed);
transfer.plugin.processUploadFiles();
} catch (e) {
Signiant.Mst.log('Calc-Selected-File-Size: Failed to perform processing of the selected files to calculate sizes with transfer with ID: ' + transfer.getTransferId());
Signiant.Mst.log(e);
throw messagesMap.getMessageForTransport('signiant.transfer.error.failedToCalcSelectedFileSize');
}
};
transfer.setFilesToUpload = function (fileNameArray) {
if (fileNameArray == undefined || fileNameArray.length == 0) {
throw messagesMap.getMessageForTransport('signiant.transfer.error.specifyFileToUpload');
}
transfer.setFiles(fileNameArray);
Signiant.Mst.log('Set-Files-To-Upload: New file list for upload: ' + transfer.getProperty(Signiant.Mst.Transfer.filesPropName) + ' with transfer ID: ' + transfer.getTransferId());
};
transfer.clearFiles = function (filesArray) {
if (filesArray == undefined || filesArray.length == 0) {
throw messagesMap.getMessageForTransport('signiant.transfer.error.undefinedListOfFilesToClear');
}
if (!filesArray.push) {
throw messagesMap.getMessageForTransport('signiant.transfer.error.invalidListOfFiles');
}
try {
transfer.removeFromFilesProperty(filesArray);
transfer.plugin.removeUploadFiles(filesArray);
} catch (e) {
Signiant.Mst.log('Clear-Files: Failed to clear specified files with transfer ID: ' + transfer.getTransferId());
Signiant.Mst.log(e);
throw messagesMap.getMessageForTransport('signiant.transfer.error.failedToClearFiles');
}
};
transfer.clearAllFiles = function () {
try {
transfer.deleteFilesProperty();
transfer.plugin.clearUploadFiles();
} catch (e) {
Signiant.Mst.log('Clear-All-Files: Failed to clear all files with transfer ID: ' + transfer.getTransferId());
Signiant.Mst.log(e);
throw messagesMap.getMessageForTransport('signiant.transfer.error.failedToClearAllFiles');
}
};
transfer.chooseUploadFiles = function (callback) {
if (callback != undefined) {
try {
transfer.filesSelectedCallback = callback;
transfer.subscribeForPluginEvent(Signiant.Mst.uploadFilesChosenEventName, transfer.handleUploadFilesChosen);
transfer.subscribeForPluginEvent(Signiant.Mst.tooManyUploadFilesChosenEventName, transfer.handleTooManyFilesChosen);
transfer.plugin.setMaxUploadFiles(Signiant.Mst.maxNumberFiles);
transfer.plugin.chooseUploadFiles();
} catch (e) {
Signiant.Mst.log('Choose-Upload-Files: Failed to choose upload file with transfer ID: ' + transfer.getTransferId());
Signiant.Mst.log(e);
throw messagesMap.getMessageForTransport('signiant.transfer.error.failedToChooseUploadFiles');
}
} else {
throw messagesMap.getMessageForTransport('signiant.transfer.error.undefinedFileSelectCallback');
}
};
transfer.handleUploadFilesChosen = function (files) {
try {
if (files.length > 0 && files != "[]") {
Signiant.Mst.log('Transfer - uploadFilesChosen : ' + files + ' for transfer with ID: ' + transfer.getTransferId());
if (transfer.filesSelectedCallback != undefined) {
transfer.filesSelectedCallback(Signiant.Mst.uploadFilesChosenEvent, JSON.parse(files), transfer);
}
if (transfer.advancedEventCallbacksMap[Signiant.Mst.uploadFilesChosenEventName]) {
transfer.advancedEventCallbacksMap[Signiant.Mst.uploadFilesChosenEventName](transfer, files);
}
}
} catch (e) {
Signiant.Mst.log('Upload-Files-Chosen: Failed to set chosen upload files with transfer ID: ' + transfer.getTransferId());
Signiant.Mst.log(e);
throw messagesMap.getMessageForTransport('signiant.transfer.error.failedToSetUploadFiles');
}
};
transfer.handleTooManyFilesChosen = function () {
try {
if (transfer.filesSelectedCallback != undefined) {
transfer.filesSelectedCallback(Signiant.Mst.tooManyFilesChosenEvent, {}, transfer);
}
if (transfer.advancedEventCallbacksMap[Signiant.Mst.tooManyUploadFilesChosenEventName]) {
transfer.advancedEventCallbacksMap[Signiant.Mst.tooManyUploadFilesChosenEventName](transfer);
}
} catch (e) {
Signiant.Mst.log('Upload-Too-Many-Files-Chosen: Failed to send callback for too many files chosen to upload with transfer ID: ' + transfer.getTransferId());
Signiant.Mst.log(e);
throw messagesMap.getMessageForTransport('signiant.transfer.error.callbackFailedForTooManyFiles');
}
};
return transfer;
};
Signiant.Mst.Download = function () {
var transfer = new Signiant.Mst.Transfer();
transfer.downloadFolderSelectedCallback;
transfer.startDownload = function () {
try {
transfer.resetLastError();
if (Signiant.Mst.isValidAPIKey && Signiant.Mst.isPluginInstalled) {
transfer.transferProperties[Signiant.Mst.Transfer.modePropName] = 'RECEIVE';
transfer.subscribeForPluginEvents();
transfer.plugin.setMaxUploadFiles(Signiant.Mst.maxNumberFiles);
transfer.plugin.downloadFiles(transfer.getTransferProperties());
} else {
throw Signiant.Mst.validateKeyErrorMessage;
}
} catch (e) {
Signiant.Mst.log('Start-Download: Failed to start download with transfer ID: ' + transfer.getTransferId());
Signiant.Mst.log(e);
throw messagesMap.getMessageForTransport('signiant.transfer.error.failedToDownload');
}
};
transfer.setFilesToDownload = function (fileNameArray) {
if (fileNameArray == undefined || fileNameArray.length == 0) {
throw messagesMap.getMessageForTransport('signiant.transfer.error.specifyFileToDownload');
}
transfer.setFiles(fileNameArray);
Signiant.Mst.log('Set-Files-To-Download: New file list for download: ' + transfer.getProperty(Signiant.Mst.Transfer.filesPropName) + ' with transfer ID: ' + transfer.getTransferId());
};
transfer.setDownloadFolder = function (folder) {
transfer.setDestinationDir(folder);
};
transfer.clearAllFiles = function () {
try {
transfer.deleteFilesProperty();
} catch (e) {
Signiant.Mst.log('Clear-All-Files: Failed to clear all files with transfer ID: ' + transfer.getTransferId());
Signiant.Mst.log(e);
throw messagesMap.getMessageForTransport('signiant.transfer.error.failedToClearAllFiles');
}
};
transfer.clearFiles = function (filesArray) {
if (filesArray == undefined || filesArray.length == 0) {
throw messagesMap.getMessageForTransport('signiant.transfer.error.undefinedListOfFilesToClear');
}
if (!filesArray.push) {
throw messagesMap.getMessageForTransport('signiant.transfer.error.invalidListOfFiles');
}
try {
transfer.removeFromFilesProperty(filesArray);
} catch (e) {
Signiant.Mst.log('Clear-Files: Failed to clear specified files with transfer ID: ' + transfer.getTransferId());
Signiant.Mst.log(e);
throw messagesMap.getMessageForTransport('signiant.transfer.error.failedToClearFiles');
}
};
transfer.chooseDownloadFolder = function (callback) {
if (callback != undefined) {
try {
transfer.downloadFolderSelectedCallback = callback;
transfer.subscribeForPluginEvent(Signiant.Mst.downloadDestinationChosenEventName, transfer.handleDownloadFolderChosen);
transfer.plugin.setMaxUploadFiles(Signiant.Mst.maxNumberFiles);
transfer.plugin.chooseDownloadFolder();
} catch (e) {
Signiant.Mst.log('Choose-Download-Folder: Failed to choose folder for transfer with ID: ' + transfer.getTransferId());
Signiant.Mst.log(e);
throw messagesMap.getMessageForTransport('signiant.transfer.error.failedToChooseFolder');
}
} else {
throw messagesMap.getMessageForTransport('signiant.transfer.error.undefinedFolderSelectCallback');
}
};
transfer.handleDownloadFolderChosen = function (folder) {
try {
if (folder != "" && transfer.downloadFolderSelectedCallback != undefined) {
Signiant.Mst.log('Transfer - downloadFolderChosen : ' + folder + ' for transfer with ID: ' + transfer.getTransferId());
transfer.downloadFolderSelectedCallback(Signiant.Mst.downloadFolderChosenEvent, folder, transfer);
}
if (transfer.advancedEventCallbacksMap[Signiant.Mst.downloadDestinationChosenEventName]) {
transfer.advancedEventCallbacksMap[Signiant.Mst.downloadDestinationChosenEventName](transfer, folder);
}
} catch (e) {
Signiant.Mst.log('Download-Folder-Chosen: Failed to set chosen download folder for transfer with ID: ' + transfer.getTransferId());
Signiant.Mst.log(e);
throw messagesMap.getMessageForTransport('signiant.transfer.error.failedToSetDownloadFolder');
}
};
transfer.setFilePathHandlingMode = function (mode) {
if (mode == undefined || mode.length == 0) {
throw messagesMap.getMessageForTransport('signiant.transfer.error.invalidFilePathHandlingMode');
}
if (mode != Signiant.Mst.Transfer.filePathModeFlat && mode != Signiant.Mst.Transfer.filePathModePath && mode != Signiant.Mst.Transfer.filePathModeFull) {
throw messagesMap.getMessageForTransport('signiant.transfer.error.invalidFilePathHandlingMode');
}
transfer.setProperty(Signiant.Mst.Transfer.filePathHandlingModePropName, mode);
Signiant.Mst.log('Set-Dir-Handling-Mode: New Mode: ' + transfer.getProperty(Signiant.Mst.Transfer.filePathHandlingModePropName) + ' for transfer with ID: ' + transfer.getTransferId());
};
transfer.getFilePathHandlingMode = function () {
return transfer.getProperty(Signiant.Mst.Transfer.filePathHandlingModePropName);
};
transfer.setFileCollisionHandlingMode = function (mode) {
if (mode == undefined || mode.length == 0) {
throw messagesMap.getMessageForTransport('signiant.transfer.error.invalidFileCollisionHandling');
}
if (mode != Signiant.Mst.Transfer.fileCollisionModeVersion && mode != Signiant.Mst.Transfer.fileCollisionModeOverwrite) {
throw messagesMap.getMessageForTransport('signiant.transfer.error.invalidFileCollisionHandling');
}
transfer.setProperty(Signiant.Mst.Transfer.fileCollisionHandlingPropName, mode);
Signiant.Mst.log('Set-File-Collision-Handling: New Value: ' + transfer.getProperty(Signiant.Mst.Transfer.fileCollisionHandlingPropName) + ' for transfer with ID: ' + transfer.getTransferId());
};
transfer.getFileCollisionHandlingMode = function () {
return transfer.getProperty(Signiant.Mst.Transfer.fileCollisionHandlingPropName);
};
return transfer;
};
Signiant.Mst.Plugin = function (transferId) {
var pluginRef = {};
pluginRef.transferId = transferId;
pluginRef.pluginParentDivId = 'transfer-' + pluginRef.transferId;
pluginRef.pluginDOMId = Signiant.Mst.getPluginPropName() + "-" + pluginRef.transferId;
embedPlugin(pluginRef.pluginParentDivId, pluginRef.pluginDOMId, oPluginStatus.installedVersionInfo.majorVersion, oPluginStatus.installedVersionInfo.minorVersion, null, null, null);
pluginRef.getPluginDOM = function () {
var pluginDOMRef = document.getElementById(pluginRef.pluginDOMId);
if (pluginDOMRef == undefined || pluginDOMRef == null) {
embedPlugin(pluginRef.pluginParentDivId, pluginRef.pluginDOMId, oPluginStatus.installedVersionInfo.majorVersion, oPluginStatus.installedVersionInfo.minorVersion, null, null, null);
pluginDOMRef = document.getElementById(pluginRef.pluginDOMId);
}
return pluginDOMRef;
};
pluginRef.setLogLevel = function (logLevel) {
try {
if (logLevel && logLevel.length > 0) {
var logLevelUpperCase = logLevel.toUpperCase();
if ("INFO" === logLevelUpperCase || "DEBUG" === logLevelUpperCase) {
pluginRef.getPluginDOM().setPluginLogLevel(logLevelUpperCase);
Signiant.Mst.log("Plugin-Set-Log-Level: Successfully set log-level to: " + logLevelUpperCase);
return logLevelUpperCase;
}
}
} catch (e) {
Signiant.Mst.log("Failed to set plug-in log-level to: " + logLevel);
Signiant.Mst.log(e);
throw messagesMap.getMessageForTransport('signiant.transfer.error.failedToSetLogLevel');
}
};
pluginRef.getTransferStats = function () {
var pluginDOMRef = pluginRef.getPluginDOM();
var stats = pluginDOMRef.getTransferStats();
return stats;
};
pluginRef.subscribeForEvent = function (name, func) {
var pluginDOM = pluginRef.getPluginDOM();
if (pluginDOM != undefined) {
if (window.addEventListener && navigator.appName != 'Microsoft Internet Explorer') {
pluginDOM.addEventListener(name, func, false);
} else {
pluginDOM.attachEvent("on" + name, func);
}
} else {
throw messagesMap.getMessageForTransport('signiant.transfer.error.failedToSubscribeForEvent') + name;
}
};
pluginRef.chooseUploadFiles = function () {
try {
pluginRef.getPluginDOM().chooseUploadFiles();
} catch (e) {
Signiant.Mst.log('Plugin-Choose-Upload-Files: Failed to choose upload files.');
Signiant.Mst.log(e);
throw messagesMap.getMessageForTransport('signiant.transfer.error.failedToChooseUploadFiles');
}
};
pluginRef.chooseDownloadFolder = function (callback) {
try {
pluginRef.getPluginDOM().chooseDownloadDestination();
} catch (e) {
Signiant.Mst.log('Plugin-Choose-Download-Folder: Failed to choose download folder.');
Signiant.Mst.log(e);
throw messagesMap.getMessageForTransport('signiant.transfer.error.failedToChooseDownloadFolder');
}
};
pluginRef.clearUploadFiles = function () {
try {
pluginRef.getPluginDOM().clearUploadFiles();
} catch (e) {
Signiant.Mst.log('Plugin-Clear-Upload-Files: Failed to clear upload files.');
Signiant.Mst.log(e);
throw messagesMap.getMessageForTransport('signiant.transfer.error.failedToChooseUploadFiles');
}
};
pluginRef.removeUploadFiles = function (fileArr) {
try {
pluginRef.getPluginDOM().removeUploadFiles(fileArr);
} catch (e) {
Signiant.Mst.log('Plugin-Clear-Upload-Files: Failed to remove upload files.');
Signiant.Mst.log(e);
throw messagesMap.getMessageForTransport('signiant.transfer.error.failedToRemoveUploadFiles');
}
};
pluginRef.uploadFiles = function (config) {
if (config == undefined) {
throw messagesMap.getMessageForTransport('signiant.transfer.error.specifyConfigForUpload');
}
try {
Signiant.Mst.log("uploadFiles : Call to plugin to upload");
Signiant.Mst.validateTransferAgentsList(config[Signiant.Mst.Transfer.urlListPropName]);
pluginRef.getPluginDOM().uploadFiles(JSON.stringify(config));
} catch (e) {
Signiant.Mst.log("Plugin-Upload-Files: Failed to upload files.");
Signiant.Mst.log(e);
throw messagesMap.getMessageForTransport('signiant.transfer.error.failedToUploadAtPlugin');
}
};
pluginRef.downloadFiles = function (config) {
if (config == undefined) {
throw messagesMap.getMessageForTransport('signiant.transfer.error.specifyConfigForDownload');
}
try {
Signiant.Mst.log("downloadFiles : Call to plugin to download");
Signiant.Mst.validateTransferAgentsList(config[Signiant.Mst.Transfer.urlListPropName]);
pluginRef.getPluginDOM().downloadFiles(JSON.stringify(config));
} catch (e) {
Signiant.Mst.log(e);
throw messagesMap.getMessageForTransport('signiant.transfer.error.failedToDownloadAtPlugin');
}
};
pluginRef.setMaxUploadFiles = function (numFiles) {
pluginRef.getPluginDOM().setMaxUploadFiles(numFiles);
Signiant.Mst.log("Set the maximum number of files that can be uploaded to " + numFiles);
};
pluginRef.cancelTransfer = function () {
try {
pluginRef.getPluginDOM().cancelTransfer();
} catch (e) {
throw messagesMap.getMessageForTransport('signiant.transfer.error.failedToCancelTransfer');
}
};
pluginRef.processUploadFiles = function () {
try {
pluginRef.getPluginDOM().processUploadFiles();
} catch (e) {
throw messagesMap.getMessageForTransport('signiant.transfer.error.failedToProcessUploadFiles');
}
};
pluginRef.isIEProtectedModeOn = function () {
return pluginRef.getPluginDOM().isIEProtectedModeOn() == "true" ? true : false;
};
return pluginRef;
};
Signiant.Mst.Version = function (majorVersion, minorVersion) {
var version = {};
version.majorVersion = Number(majorVersion);
version.minorVersion = Number(minorVersion);
version.decrement = function () {
version.majorVersion = (version.minorVersion == 0 ? (version.majorVersion == 0 ? 0 : (version.majorVersion - 1)) : version.majorVersion);
version.minorVersion = (version.minorVersion == 0 ? 9 : (version.minorVersion - 1));
};
version.greaterThan = function (otherVersion) {
return (version.majorVersion > otherVersion.majorVersion) || (version.majorVersion == otherVersion.majorVersion && version.minorVersion > otherVersion.minorVersion);
};
version.equals = function (otherVersion) {
return (version.majorVersion == otherVersion.majorVersion && version.minorVersion == otherVersion.minorVersion);
};
version.greaterThanOrEquals = function (otherVersion) {
return version.equals(otherVersion) || version.greaterThan(otherVersion);
};
return version;
};
Signiant.Mst.FireBreath = function () {
var fireBreath = {};
fireBreath.pluginDefs = {};
fireBreath.registerPlugin = function (plugin) {
fireBreath.pluginDefs[plugin.name] = {
"name": plugin.name,
"mimeType": plugin.mimeType,
"activeXName": plugin.activeXName,
"installURL": plugin.installURL
};
};
fireBreath.injectPlugin = function (pluginName, dest, id, width, height, callback, params) {
var info = fireBreath.pluginDefs[pluginName];
if (typeof (params) == "undefined") {
params = {};
}
__pluginCB = callback;
params["onload"] = "__pluginCB";
var html = '<object id="' + id + '" type="' + info.mimeType + '" width="' + width + '" height="' + height + '">';
for (paramName in params) {
html += '<param name="' + paramName + '" value="' + params[paramName] + '" />';
}
html += '</object>';
dest.innerHTML = html;
};
fireBreath.isPluginInstalled = function (pluginName, minReqVersionInfo, latestVersionInfo) {
var minReqVersion = new Signiant.Mst.Version(minReqVersionInfo.majorVersion, minReqVersionInfo.minorVersion);
var latestVersion = new Signiant.Mst.Version(latestVersionInfo.majorVersion, latestVersionInfo.minorVersion);
var latestMajorVerDotZero = new Signiant.Mst.Version(latestVersionInfo.majorVersion, 0);
var testVersion = latestVersion;
var suitablePluginFound = false;
while (testVersion.greaterThanOrEquals(minReqVersion) && testVersion.greaterThanOrEquals(latestMajorVerDotZero)) {
if (fireBreath.isPluginVersionInstalled(pluginName, testVersion)) {
suitablePluginFound = true;
oPluginStatus.installedVersionInfo = {
name: pluginName,
majorVersion: testVersion.majorVersion,
minorVersion: testVersion.minorVersion
};
break;
}
testVersion.decrement();
}
return suitablePluginFound;
};
fireBreath.isPluginVersionInstalled = function (pluginName, pluginVersion) {
var ie = window.ActiveXObject;
var npapi = navigator.plugins;
if (ie) {
return fireBreath._isIEPluginInstalled(pluginName, pluginVersion);
} else if (npapi) {
return fireBreath._isNpapiPluginInstalled(pluginName, pluginVersion);
} else {
throw 'Cannot determine if plug-in is installed because browser is unsupported!';
}
};
fireBreath._isIEPluginInstalled = function (pluginName, pluginVersion) {
var fullAXOName = 'SigniantInc.' + pluginName + '-v' + pluginVersion.majorVersion + '.' + pluginVersion.minorVersion;
var pluginInstalled = false;
try {
new ActiveXObject(fullAXOName);
pluginInstalled = true;
} catch (e) {}
return pluginInstalled;
};
fireBreath._isNpapiPluginInstalled = function (pluginName, pluginVersion) {
var fullPluginName = pluginName + ' v' + pluginVersion.majorVersion + '.' + pluginVersion.minorVersion;
var plugins = navigator.plugins;
var pluginInstalled = false;
for (var i = 0; i < plugins.length; i++) {
var foundPluginName = plugins[i].name;
if (fullPluginName == foundPluginName) {
pluginInstalled = true;
break;
}
}
return pluginInstalled;
};
return fireBreath;
};
Signiant.Mst.firebreathRef = new Signiant.Mst.FireBreath();
function isBase64Char(candidateChar) {
var isBase64 = false;
if (candidateChar !== undefined && candidateChar.length == 1) {
var charAsciiCode = candidateChar.charCodeAt(0);
if (charAsciiCode == 43 || charAsciiCode == 47 || charAsciiCode == 61 || (charAsciiCode >= 48 && charAsciiCode <= 57) || (charAsciiCode >= 65 && charAsciiCode <= 90) || (charAsciiCode >= 97 && charAsciiCode <= 122)) {
isBase64 = true;
}
}
return isBase64;
};
function getNewXMLHttpRequest() {
return new XMLHttpRequest();
};
function Xor128(x, y, z, w) {
this.x = (x ? x >>> 0 : 123456789);
this.y = (y ? y >>> 0 : 362436069);
this.z = (z ? z >>> 0 : 521288629);
this.w = (w ? w >>> 0 : 88675123);
};
function Xor128_init() {
return new Xor128(new Date().getTime());
};
Xor128.init = Xor128_init;
function next() {
var me = this,
x = me.x,
w = me.w,
t = x ^ (x << 11);
me.x = me.y = me.z = w;
return me.w = (w ^ (w >> 19)) ^ (t ^ (t >> 8));
};
Xor128.prototype.next = next;
function make(cnt) {
var i = 0,
result = [];
for (; i < cnt; ++i) {
result[i] = this.next();
}
return result;
};
Xor128.prototype.make = make;
function Xor128_random() {
return Xor128_init().make(3)[2] / 4294967296 * 2;
};
Xor128.random = Xor128_random;
Xorshift = Xor128;
var CHARS = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split('');
function RFC4122_uuid() {
var _chars = CHARS,
i = 0,
uuid = new Array(36),
rnd = 0;
uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-';
uuid[14] = '4';
for (; i < 36; ++i) {
if (i !== 8 && i !== 13 && i !== 18 && i !== 14 && i !== 23) {
if (rnd <= 0x02) {
rnd = 0x2000000 + (Xorshift.random() * 0x1000000) | 0;
}
rnd >>= 4;
uuid[i] = _chars[(i === 19) ? ((rnd & 0xf) & 0x3) | 0x8 : rnd & 0xf];
}
}
return uuid.join('');
};
function detectPlugin(callbacks) {
if (callbacks) {
if (callbacks.success && typeof callbacks.success === 'function') {
Signiant.Mst.detectPluginSuccess = callbacks.success;
}
if (callbacks.error && typeof callbacks.error === 'function') {
Signiant.Mst.detectPluginError = callbacks.error;
}
}
try {
var pluginDetailsUrl = generateURLForPluginDetails();
if ('withCredentials' in new XMLHttpRequest()) {
detectPluginForOtherThanIE8_9(pluginDetailsUrl);
} else {
detectPluginForIE8_9(pluginDetailsUrl);
}
} catch (e) {
Signiant.Mst.log('Failed to query the latest plug-in version from Media Shuttle');
Signiant.Mst.log(e);
if (Signiant.Mst.detectPluginError) {
Signiant.Mst.detectPluginError(messagesMap.getMessage('signiant.error.detectPlugin.failureAlert'));
} else {
alert(messagesMap.getMessage('signiant.error.detectPlugin.failureAlert'));
}
}
};
function detectPluginForOtherThanIE8_9(pluginDetailsUrl) {
jQuery.support.cors = true;
var xhr = getNewXMLHttpRequest();
xhr.onerror = failureInInstallOrUpgradePlugin;
xhr.onreadystatechange = function () {
if (xhr.readyState == 4) {
if (xhr.status == '200' && xhr.statusText == 'OK') {
installOrUpgradePlugin(JSON.parse(xhr.responseText), "SUCCESS", xhr);
} else {
failureInInstallOrUpgradePlugin(xhr);
}
}
};
xhr.open("GET", pluginDetailsUrl, true);
xhr.send();
};
function detectPluginForIE8_9(pluginDetailsUrl) {
if (isHttpProtocol()) {
var xdr = new XDomainRequest();
xdr.open("GET", pluginDetailsUrl);
xdr.onload = function () {
installOrUpgradePlugin(null, null, xdr);
};
xdr.onprogress = function () {};
xdr.ontimeout = function () {};
xdr.onerror = function () {
failureInInstallOrUpgradePlugin();
};
setTimeout(function () {
xdr.send();
}, 0);
} else {
var xhrForPlugin;
try {
xhrForPlugin = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
xhrForPlugin = false;
}
if (xhrForPlugin) {
xhrForPlugin.onreadystatechange = function () {
if (xhrForPlugin.readyState == 4) {
if (xhrForPlugin.status == '200' && xhrForPlugin.statusText == 'OK') {
installOrUpgradePlugin(null, null, xhrForPlugin);
} else {
failureInInstallOrUpgradePlugin();
}
}
};
xhrForPlugin.open("GET", pluginDetailsUrl);
xhrForPlugin.setRequestHeader("Content-Type", "application/json");
xhrForPlugin.send();
} else {
Signiant.Mst.log('Could not create a valid AJAX object in IE to get plugin details!');
if (Signiant.Mst.detectPluginError) {
Signiant.Mst.detectPluginError(messagesMap.getMessage('signiant.error.detectPlugin.failureAlert'));
} else {
alert(messagesMap.getMessage('signiant.error.detectPlugin.failureAlert'));
}
return;
}
}
};
function installOrUpgradePlugin(response, status, jqXHR) {
try {
if (jqXHR.responseText != "" && jqXHR.responseText != undefined) {
var responseJson = JSON.parse(jqXHR.responseText);
Signiant.Mst.minPluginVersion = responseJson['minPluginVersion'];
Signiant.Mst.pluginLatestVersion = responseJson['version'];
Signiant.Mst.pluginFileURL = responseJson['file'];
Signiant.Mst.pluginImageBaseURL = responseJson['imageBaseUrl'];
Signiant.Mst.log('Minimum supported plug-in version is: ' + Signiant.Mst.minPluginVersion + '.');
Signiant.Mst.log('Latest available plug-in version is: ' + Signiant.Mst.pluginLatestVersion + '.');
updatePluginStatus();
if (!oPluginStatus.isInstallRequired) {
Signiant.Mst.isPluginInstalled = true;
if (Signiant.Mst.detectPluginSuccess) {
Signiant.Mst.detectPluginSuccess();
}
} else {
showPluginDownloadView();
}
} else {
Signiant.Mst.log('Failure in getting plugin information from server.');
if (Signiant.Mst.detectPluginError) {
Signiant.Mst.detectPluginError(messagesMap.getMessage('signiant.error.detectPlugin.failureAlert'));
} else {
alert(messagesMap.getMessage('signiant.error.detectPlugin.failureAlert'));
}
}
} catch (e) {
Signiant.Mst.log('ERROR: Failed to install/upgrade the plugin. Cause: ' + e);
}
};
function failureInInstallOrUpgradePlugin() {
Signiant.Mst.log('Failure in getting response from server for plugin details ');
if (Signiant.Mst.detectPluginError) {
Signiant.Mst.detectPluginError(messagesMap.getMessage('signiant.error.detectPlugin.failureAlert'));
} else {
alert(messagesMap.getMessage('signiant.error.detectPlugin.failureAlert'));
}
}
function parseVersionStr(strVersion) {
var arrayMatches = strVersion.match(/^(\d+)\.(\d+)/);
return {
majorVersion: arrayMatches[1],
minorVersion: arrayMatches[2]
};
};
function parseFullVersionStr(strVersion) {
var arrayMatches = strVersion.match(/^(\d+)\.(\d+)\..*$/);
return {
majorVersion: arrayMatches[1],
minorVersion: arrayMatches[2]
};
};
function embedPlugin(pluginParentDivId, pluginDivName, pluginMajorVersion, pluginMinorVersion, fnAuthenticityCheckSuccessCallback, fnAuthenticityCheckFailureCallback, fnAuthenticityCheckErrorCallback) {
Signiant.Mst.firebreathRef.registerPlugin({
'name': pluginDivName,
'mimeType': 'application/x-signianttransfer-v' + pluginMajorVersion + '.' + pluginMinorVersion,
'activeXName': 'SigniantInc.' + oPluginStatus.installedVersionInfo.name
});
var pluginParentDiv = document.getElementById(pluginParentDivId);
if (pluginParentDiv == undefined || pluginParentDiv == null) {
pluginParentDiv = document.createElement('div');
pluginParentDiv.id = pluginParentDivId;
pluginParentDiv.height = '1';
pluginParentDiv.width = '1';
document.getElementsByTagName('body')[0].appendChild(pluginParentDiv);
} else {
Signiant.Mst.log('A DOM element with the ID ' + pluginParentDivId + ' already exists.');
}
Signiant.Mst.firebreathRef.injectPlugin(pluginDivName, pluginParentDiv, pluginDivName, '0%', '0%', function () {
Signiant.Mst.log('Injected new plug-in instance.');
});
};
function updatePluginStatus() {
var pluginBaseName = 'MediaShuttlePlugin';
var oMinReqMajorMinorVersions = parseVersionStr(Signiant.Mst.minPluginVersion);
var oLatestMajorMinorVersions = parseFullVersionStr(Signiant.Mst.pluginLatestVersion);
navigator.plugins.refresh(false);
if (Signiant.Mst.firebreathRef.isPluginInstalled(pluginBaseName, oMinReqMajorMinorVersions, oLatestMajorMinorVersions)) {
if (oPluginStatus.installedVersionInfo.majorVersion == oMinReqMajorMinorVersions.majorVersion) {
if (oPluginStatus.installedVersionInfo.minorVersion == oMinReqMajorMinorVersions.minorVersion || oPluginStatus.installedVersionInfo.minorVersion > oMinReqMajorMinorVersions.minorVersion) {
oPluginStatus.isInstallRequired = false;
} else if (oPluginStatus.installedVersionInfo.minorVersion < oMinReqMajorMinorVersions.minorVersion) {
oPluginStatus.isInstallRequired = true;
}
} else if (oPluginStatus.installedVersionInfo.majorVersion < oMinReqMajorMinorVersions.majorVersion) {
oPluginStatus.isInstallRequired = true;
} else if (oPluginStatus.installedVersionInfo.majorVersion > oMinReqMajorMinorVersions.majorVersion) {
oPluginStatus.isInstallRequired = false;
}
Signiant.Mst.log("Installed plug-in version is: " + oPluginStatus.installedVersionInfo.majorVersion + "." + oPluginStatus.installedVersionInfo.minorVersion);
} else {
oPluginStatus.isInstallRequired = true;
}
if (oPluginStatus.isInstallRequired) {
Signiant.Mst.log("Plug-in install/upgrade is required.");
} else {
Signiant.Mst.log("Plug-in install/upgrade is not required.");
}
}
function getInstructionDiv(colour, id, label, description, imageUrl) {
var platform = /Mac/.test(window.navigator.platform) ? "mac" : "win";
return $('<div/>').attr('id', id).css({
'border-bottom-color': colour.border,
'border-bottom-left-radius': '6px',
'border-bottom-right-radius': '6px',
'border-bottom-style': 'dashed',
'border-bottom-width': '2px',
'border-left-color': colour.border,
'border-left-style': 'dashed',
'border-left-width': '2px',
'border-right-color': colour.border,
'border-right-style': 'dashed',
'border-right-width': '2px',
'border-top-color': colour.border,
'border-top-left-radius': '6px',
'border-top-right-radius': '6px',
'border-top-style': 'dashed',
'border-top-width': '2px',
'display': 'table-cell'
}).append($('<img/>').attr('src', imageUrl + 'plugin-install-instruction-' + label + '-' + platform + '.png')).append($('<h1/>').css({
'color': colour.border,
'float': 'left',
'font-size': '36px',
'margin-bottom': '0px',
'margin-left': '10px',
'margin-right': '10px',
'margin-top': '0px'
}).html(label)).append($('<p/>').css({
'color': colour.textGrey,
'float': 'center',
'font-size': '16px',
'font-weight': 'bold'
}).html(description));
}
function downloadPlugin(pluginUrl) {
var controlId = 'plugin-download-control';
var downloadControl = $('#' + controlId);
if (downloadControl.length > 0) {
downloadControl.remove();
}
$('<iframe/>', {
id: controlId,
src: pluginUrl,
style: 'display:none'
}).appendTo('body');
}
function showPluginDownloadView() {
if ($('#native-plugin-not-found').length) return;
var colour = {
anchor: 'rgb(34, 154, 214)',
border: 'rgb(183, 213, 73)',
textBlue: 'rgb(34, 154, 214)',
textGrey: 'rgb(102, 102, 102)'
};
var imageUrl = Signiant.Mst.pluginImageBaseURL;
var fontFamily = 'SourceSansPro, Calibri, Geeza Pro, Arial, sans-serif';
var closeButton = $('<img/>').attr('src', imageUrl + 'close.png').css({
'height': '14px',
'position': 'absolute',
'right': '8px',
'top': '8px',
'width': '14px'
}).on('mouseenter', function () {
$(this).attr('src', imageUrl + 'closeHighlighted.png');
}).on('mouseleave', function () {
$(this).attr('src', imageUrl + 'close.png');
}).click(function () {
$('#native-plugin-not-found').remove();
$('#native-plugin-not-found-modal').remove();
if (Signiant.Mst.detectPluginWait) {
window.clearInterval(Signiant.Mst.detectPluginWait);
delete Signiant.Mst.detectPluginWait;
}
return false;
});
var pluginDownloadHeader = $('<div/>').attr('id', 'native-plugin-not-found-header').css({
'border-bottom-color': colour.border,
'border-bottom-style': 'solid',
'border-bottom-width': '2px',
'color': colour.textBlue,
'font-size': '18px',
'font-weight': 'bold',
'padding-bottom': '5px',
'padding-left': '5px',
'padding-right': '5px',
'padding-top': '5px'
}).append($('<img/>').attr('src', imageUrl + 'MediaShuttle.png').css({
'margin-right': '10px',
'maxHeight': '35px'
})).append(messagesMap.getMessage('signiant.install.plugin.header')).append(closeButton);
var pluginDownloadBody = $('<div/>').attr('id', 'native-plugin-not-found-body').css({
'color': colour.textGrey,
'font-size': '14px',
'padding-bottom': '15px',
'padding-left': '30px',
'padding-right': '30px',
'padding-top': '5px'
}).append($('<p/>').html(messagesMap.getMessage('signiant.install.plugin.missing'))).append($('<p/>').html(messagesMap.getMessage('signiant.install.plugin.explanation'))).append($('<div/>').css('text-align', 'center').append($('<button/>').css({
'background-color': 'rgb(32, 108, 192)',
'border-bottom-left-radius': '7px',
'border-bottom-right-radius': '7px',
'border-top-left-radius': '7px',
'border-top-right-radius': '7px',
'color': 'white',
'font-family': fontFamily,
'font-size': '16px',
'padding-bottom': '5px',
'padding-left': '15px',
'padding-right': '15px',
'padding-top': '5px'
}).attr('id', 'install-plugin-button').text(messagesMap.getMessage('signiant.install.plugin.button')).click(function () {
$('#native-plugin-not-found-body').css('display', 'none');
$('#native-plugin-not-found-install').css('display', 'block');
$('#native-plugin-not-found').css({
'margin-left': '-310px',
'width': '620px'
});
downloadPlugin(Signiant.Mst.pluginFileURL);
})));
var pluginDownloadInstall = $('<div/>').attr('id', 'native-plugin-not-found-install').css({
'color': colour.textGrey,
'display': 'none',
'font-size': '14px',
'padding-bottom': '15px',
'padding-left': '30px',
'padding-right': '30px',
'padding-top': '5px'
}).append($('<p/>').css('text-align', 'center').html(messagesMap.getMessage('signiant.install.plugin.download.prefix')).append($('<a/>').attr('id', 'native-plugin-not-found-direct').attr('href', Signiant.Mst.pluginFileURL).css('color', colour.anchor).text(messagesMap.getMessage('signiant.install.plugin.download.click')).click(function () {
downloadPlugin(Signiant.Mst.pluginFileURL);
})).append(messagesMap.getMessage('signiant.install.plugin.download.suffix'))).append(getInstructionDiv(colour, 'native-plugin-not-found-instruction-1', messagesMap.getMessage('signiant.install.plugin.download.step1.label'), messagesMap.getMessage('signiant.install.plugin.download.step1.description'), imageUrl)).append($('<div/>').css({
'display': 'table-cell'
}).html("&nbsp;&nbsp;")).append(getInstructionDiv(colour, 'native-plugin-not-found-instruction-2', messagesMap.getMessage('signiant.install.plugin.download.step2.label'), messagesMap.getMessage('signiant.install.plugin.download.step2.description'), imageUrl)).append($('<div/>').css({
'display': 'table-cell'
}).html("&nbsp;&nbsp;")).append(getInstructionDiv(colour, 'native-plugin-not-found-instruction-3', messagesMap.getMessage('signiant.install.plugin.download.step3.label'), messagesMap.getMessage('signiant.install.plugin.download.step3.description'), imageUrl));
var pluginDownloadFooter = $('<div/>').attr('id', 'native-plugin-not-found-footer').css({
'border-top-color': colour.border,
'border-top-style': 'solid',
'border-top-width': '2px',
'font-size': '12px',
'padding-bottom': '5px',
'padding-left': '5px',
'padding-right': '5px',
'padding-top': '5px'
}).append($('<span/>').css('float', 'left').append($('<a/>').attr('href', 'http://www.mediashuttle.com/').attr('target', '_blank').css('color', colour.anchor).text('www.mediashuttle.com'))).append($('<span/>').css('float', 'right').append($('<a/>').css('color', colour.anchor).attr('href', 'http://support.mediashuttle.com/plugin_EN.html').attr('target', '_blank').text(messagesMap.getMessage('signiant.install.plugin.help'))));
var pluginDownloadPopup = $('<div/>').attr('id', 'native-plugin-not-found').css({
'-moz-opacity': 1,
'background': '#fff',
'border-bottom-left-radius': '5px',
'border-bottom-right-radius': '5px',
'border-top-left-radius': '5px',
'border-top-right-radius': '5px',
'filter': 'alpha(opacity=100)',
'font-family': fontFamily,
'left': '50%',
'margin-left': '-240px',
'opacity': 1,
'margin-top': '10%',
'padding-bottom': '20px',
'padding-left': '10px',
'padding-right': '10px',
'padding-top': '5px',
'pointer-events': 'auto',
'position': 'fixed',
'top': '0px',
'width': '480px',
'z-index': 99999
}).append(pluginDownloadHeader).append(pluginDownloadBody).append(pluginDownloadInstall).append(pluginDownloadFooter);
var pluginDownloadModal = $('<div/>').attr('id', 'native-plugin-not-found-modal').css({
'-moz-opacity': 0.6,
'background-color': 'black',
'filter': 'alpha(opacity=60)',
'height': '100%',
'left': '0px',
'opacity': 0.6,
'position': 'fixed',
'top': '0px',
'width': '100%',
'z-index': 99998
});
$('body').append(pluginDownloadModal).append(pluginDownloadPopup);
waitForPluginToBeInstalled();
};
function waitForPluginToBeInstalled() {
try {
updatePluginStatus();
if (!oPluginStatus.isInstallRequired) {
$('#native-plugin-not-found').remove();
$('#native-plugin-not-found-modal').remove();
Signiant.Mst.isPluginInstalled = true;
if (Signiant.Mst.detectPluginSuccess) {
Signiant.Mst.detectPluginSuccess();
}
} else {
Signiant.Mst.detectPluginWait = setTimeout(waitForPluginToBeInstalled, 1000);
}
} catch (e) {
Signiant.Mst.log('Failed to query the latest plug-in version from Media Shuttle. Cause: ' + e);
if (Signiant.Mst.detectPluginError) {
Signiant.Mst.detectPluginError(messagesMap.getMessage('signiant.error.detectPlugin.failureAlert'));
} else {
alert(messagesMap.getMessage('signiant.error.detectPlugin.failureAlert'));
}
}
}
var initialize = function () {
try {
retrieveMstScriptTag();
validateAPIKey();
} catch (e) {
Signiant.Mst.log("Fatal Error: Failed to successfully initialize the application!");
Signiant.Mst.log(e);
}
};
function retrieveMstScriptTag() {
var mstScriptTag = document.getElementById('ms-api');
if (mstScriptTag == null || mstScriptTag == '') {
Signiant.Mst.validateKeyErrorMessage = messagesMap.getMessage('signiant.error.mst.script.missing');
return;
}
Signiant.Mst.mstScriptTag = mstScriptTag;
};
function retrievePluginAutoDetectMode() {
if (Signiant.Mst.mstScriptTag == undefined)
return;
var autoDetect = (Signiant.Mst.mstScriptTag).getAttribute('plugin-auto-detect');
if (autoDetect == "false") {
Signiant.Mst.pluginAutoDetect = false;
}
};
function validateAPIKey() {
if (Signiant.Mst.mstScriptTag == undefined) {
Signiant.Mst.log("Fatal error: Script tag with api-key not found!");
return;
}
var apiKey = (Signiant.Mst.mstScriptTag).getAttribute('api-key');
if (apiKey == null || apiKey == '') {
Signiant.Mst.validateKeyErrorMessage = messagesMap.getMessage('signiant.error.mst.script.apikey.missing');
return;
}
Signiant.Mst.apiKey = apiKey;
Signiant.Mst.log('Validating ApiKey : ' + Signiant.Mst.apiKey);
var keyValidationUrl = generateURLForKeyValidation();
if ('withCredentials' in new XMLHttpRequest()) {
validateAPIKeyForOtherThanIE8_9(keyValidationUrl);
} else {
validateAPIKeyForIE8_9(keyValidationUrl);
}
};
function validateAPIKeyForOtherThanIE8_9(keyValidationUrl) {
jQuery.support.cors = true;
var xhr = getNewXMLHttpRequest();
xhr.onerror = handleApiKeyValidationError;
xhr.onreadystatechange = function () {
if (xhr.readyState == 4) {
if (xhr.status == '200' && xhr.statusText == 'OK') {
handleApiKeyValidationSuccess(JSON.parse(xhr.responseText), "SUCCESS", xhr);
} else {
handleApiKeyValidationError(xhr);
}
}
};
xhr.open("GET", keyValidationUrl, true);
xhr.send();
};
function validateAPIKeyForIE8_9(keyValidationUrl) {
if (isHttpProtocol()) {
var xdr = new XDomainRequest();
xdr.open("GET", keyValidationUrl);
xdr.onload = function () {
var data = $.parseJSON(xdr.responseText);
if (data == null || typeof (data) == 'undefined') {
data = $.parseJSON(data.firstChild.textContent);
}
handleApiKeyValidationSuccess(data);
};
xdr.onprogress = function () {};
xdr.ontimeout = function () {};
xdr.onerror = function () {
handleApiKeyValidationError();
};
setTimeout(function () {
xdr.send();
}, 0);
} else {
var xhr;
try {
xhr = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
xhr = false;
}
if (xhr) {
xhr.onreadystatechange = function () {
if (xhr.readyState == 4) {
if (xhr.status == '200' && xhr.statusText == 'OK') {
handleApiKeyValidationSuccess(JSON.parse(xhr.responseText), "SUCCESS", xhr);
} else {
handleApiKeyValidationError(xhr);
}
}
};
xhr.open("GET", keyValidationUrl);
xhr.setRequestHeader("Content-Type", "application/json");
xhr.send();
} else {
Signiant.Mst.validateKeyErrorMessage = messagesMap.getMessage('signiant.error.mst.script.apikey.unknown');
Signiant.Mst.log('Could not create a valid AJAX object in IE to validate the API Key!');
return;
}
}
};
function isHttpProtocol() {
var callerUrl = window.location.href;
if (callerUrl.substr(0, 5).replace(":", "") == 'http' || callerUrl.substr(0, 5).replace(":", "") == 'https') {
return true;
}
return false;
};
function adjustCORSURLProtocolForIE8_9_Browsers(url) {
if (url !== undefined && url.length != 0) {
if (window.ActiveXObject) {
var urlProtocol = url.substr(0, 5).replace(":", "");
var pageURL = $.trim(window.location.href);
var pageURLProtocol = pageURL.substr(0, 5).replace(":", "");
if (pageURLProtocol == "http") {
url = url.replace(urlProtocol, "http");
} else if (pageURLProtocol == "https") {
url = url.replace(urlProtocol, "https");
} else if (pageURLProtocol == "file") {
url = url.replace(urlProtocol, "https");
}
}
}
return url;
};
function getBaseURL() {
var baseURL = "";
var protocol = "";
if (window.ActiveXObject) {
var callerUrl = $.trim(window.location.href);
protocol = callerUrl.substr(0, 5).replace(":", "");
if (protocol == "http") {
baseURL = "http://";
} else if (protocol == "https") {
baseURL = "https://";
} else if (protocol == "file") {
baseURL = "https://";
}
} else if (navigator.plugins) {
baseURL = "https://";
}
return baseURL + Signiant.Mst.envHostName + Signiant.Mst.REST + Signiant.Mst.VER;
};
function generateURLForKeyValidation() {
return getBaseURL() + "/apiKey/" + Signiant.Mst.apiKey + "/validate";
};
function generateURLForPluginDetails() {
return getBaseURL() + "/plugin";
}
function handleApiKeyValidationSuccess(response, status, jqXHR) {
Signiant.Mst.isValidAPIKey = true;
extractBaseTransferConfig(response);
Signiant.Mst.log('Api Key validation was successful');
};
function extractBaseTransferConfig(response) {
try {
Signiant.Mst.transferStatsUrl = response['transferStatsUrl'];
Signiant.Mst.trialKeyAgentsList = response['validAgentsList'];
} catch (e) {
Signiant.Mst.log("Failed to extract the base transfer configuration " + "from the Api Key validation response! " + e);
}
};
function handleApiKeyValidationError(response) {
Signiant.Mst.isValidAPIKey = false;
try {
var result = "";
if (response != undefined && response.responseText != "" && response.responseText != undefined) {
var responseJson = JSON.parse(response.responseText);
result = responseJson['result'];
Signiant.Mst.log(result);
} else {
Signiant.Mst.log('API key does not exist.');
result = messagesMap.getMessage('signiant.error.mst.script.apikey.invalid');
}
Signiant.Mst.validateKeyErrorMessage = result;
} catch (e) {
Signiant.Mst.log('Failure in handling the error reponse from the server for the api key ' + Signiant.Mst.apiKey);
}
};
function getVersion() {
return Signiant.Mst.apiVersion;
};
function addDOMListeners() {
var initDone = false;
if (!window.jQueryCheckCount) window.jQueryCheckCount = 0;
window.jQueryCheckCount += 1;
if (window.jQueryCheckCount < 100) {
if (typeof jQuery !== 'undefined' && typeof $ === 'function') {
if (document.readyState === "complete") {
setTimeout(initialize, 0);
initDone = true;
} else if (document.body) {
initialize();
initDone = true;
}
}
if (initDone == false) {
setTimeout(addDOMListeners, 100);
}
} else {
window.alert(messagesMap.getMessage('signiant.error.jquery.missing'));
}
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment