Created
March 22, 2014 17:01
-
-
Save robertrv/9710533 to your computer and use it in GitHub Desktop.
signiant after jsbeautifier
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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(" ")).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(" ")).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(" ")).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(" ")).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