2020-06-17 11:36:09 +00:00
|
|
|
/*
|
|
|
|
*
|
|
|
|
* (c) Copyright Ascensio System Limited 2010-2020
|
|
|
|
*
|
|
|
|
* This program is freeware. You can redistribute it and/or modify it under the terms of the GNU
|
|
|
|
* General Public License (GPL) version 3 as published by the Free Software Foundation (https://www.gnu.org/copyleft/gpl.html).
|
|
|
|
* In accordance with Section 7(a) of the GNU GPL its Section 15 shall be amended to the effect that
|
|
|
|
* Ascensio System SIA expressly excludes the warranty of non-infringement of any third-party rights.
|
|
|
|
*
|
|
|
|
* THIS PROGRAM IS DISTRIBUTED WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY OR
|
|
|
|
* FITNESS FOR A PARTICULAR PURPOSE. For more details, see GNU GPL at https://www.gnu.org/copyleft/gpl.html
|
|
|
|
*
|
|
|
|
* You can contact Ascensio System SIA by email at sales@onlyoffice.com
|
|
|
|
*
|
|
|
|
* The interactive user interfaces in modified source and object code versions of ONLYOFFICE must display
|
|
|
|
* Appropriate Legal Notices, as required under Section 5 of the GNU GPL version 3.
|
|
|
|
*
|
|
|
|
* Pursuant to Section 7 § 3(b) of the GNU GPL you must retain the original ONLYOFFICE logo which contains
|
|
|
|
* relevant author attributions when distributing the software. If the display of the logo in its graphic
|
|
|
|
* form is not reasonably feasible for technical reasons, you must include the words "Powered by ONLYOFFICE"
|
|
|
|
* in every copy of the program you distribute.
|
|
|
|
* Pursuant to Section 7 § 3(e) we decline to grant you any rights under trademark law for use of our trademarks.
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
2020-06-17 11:00:28 +00:00
|
|
|
// Options for the phantom script
|
|
|
|
exports.phantom = {
|
|
|
|
windowSize: {
|
|
|
|
width: 1024
|
|
|
|
, height: 768
|
|
|
|
}
|
|
|
|
, shotSize: {
|
|
|
|
width: 'window'
|
|
|
|
, height: 'window'
|
|
|
|
}
|
|
|
|
, shotOffset: {
|
|
|
|
left: 0
|
|
|
|
, right: 0
|
|
|
|
, top: 0
|
|
|
|
, bottom: 0
|
|
|
|
}
|
|
|
|
, defaultWhiteBackground: false
|
|
|
|
, customCSS: ''
|
|
|
|
, takeShotOnCallback: false
|
|
|
|
, streamType: 'png'
|
|
|
|
, siteType: 'url'
|
|
|
|
, renderDelay: 0
|
|
|
|
, quality: 75
|
|
|
|
, errorIfStatusIsNot200: false
|
|
|
|
, errorIfJSException: false
|
|
|
|
, cookies: []
|
|
|
|
, captureSelector: false
|
|
|
|
, zoomFactor: 1
|
|
|
|
};
|
|
|
|
|
|
|
|
// Options that are just passed to the phantom page object
|
|
|
|
exports.phantomPage = ['paperSize', 'customHeaders', 'settings', 'zoomFactor'];
|
|
|
|
|
|
|
|
// Options that are callbacks for various phantom events
|
|
|
|
exports.phantomCallback = ['onAlert', 'onCallback', 'onClosing', 'onConfirm',
|
|
|
|
'onConsoleMessage', 'onError', 'onFilePicker', 'onInitialized',
|
|
|
|
'onLoadFinished', 'onLoadStarted', 'onNavigationRequested', 'onPageCreated',
|
|
|
|
'onPrompt', 'onResourceRequested', 'onResourceReceived',
|
|
|
|
'onResourceTimeout', 'onResourceError', 'onUrlChanged'];
|
|
|
|
|
|
|
|
// Options that are used in the calling node script
|
|
|
|
exports.caller = {
|
|
|
|
phantomPath: 'phantomjs'
|
|
|
|
, phantomConfig: ''
|
|
|
|
, timeout: 0
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Merge the two objects, using the value from `a` when the objects conflict
|
|
|
|
*
|
|
|
|
* @param (Object) a
|
|
|
|
* @param (Object) b
|
|
|
|
* @return (Object)
|
|
|
|
*/
|
|
|
|
exports.mergeObjects = function mergeObjects(a, b) {
|
|
|
|
var merged = {};
|
|
|
|
|
|
|
|
Object.keys(a).forEach(function(key) {
|
|
|
|
merged[key] = toString.call(a[key]) === '[object Object]'
|
|
|
|
? mergeObjects(a[key], b[key] || {})
|
|
|
|
: a[key] || b[key];
|
|
|
|
});
|
|
|
|
|
|
|
|
Object.keys(b).forEach(function(key) {
|
|
|
|
if (merged.hasOwnProperty(key)) return;
|
|
|
|
merged[key] = b[key];
|
|
|
|
});
|
|
|
|
|
|
|
|
return merged;
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Filter the object `obj` to contain only the given keys
|
|
|
|
*
|
|
|
|
* @param (Object) obj
|
|
|
|
* @param (Array) keys
|
|
|
|
* @return (Object)
|
|
|
|
*/
|
|
|
|
exports.filterObject = function filterObject(obj, keys) {
|
|
|
|
var filtered = {};
|
|
|
|
|
|
|
|
keys.forEach(function(key) {
|
|
|
|
if (obj[key]) filtered[key] = obj[key];
|
|
|
|
});
|
|
|
|
|
|
|
|
return filtered;
|
|
|
|
};
|