12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- var debug = require('debug')('ylt:index');
- var Q = require('q');
- var Runner = require('./runner');
- var ScreenshotHandler = require('./screenshotHandler');
- var packageJson = require('../package.json');
- var yellowLabTools = function(url, options) {
- var deferred = Q.defer();
- if (!url) {
- deferred.reject('URL missing');
- } else {
- if (url.toLowerCase().indexOf('http://') !== 0 && url.toLowerCase().indexOf('https://') !== 0) {
- url = 'http://' + url;
- }
- var params = {
- url: url,
- options: options || {}
- };
- var runner = new Runner(params)
-
- .progress(deferred.notify)
- .then(function(data) {
- // If a screenshot saveFunction was provided in the options
- if (options && typeof options.saveScreenshotFn === 'function') {
- debug('Now optimizing screenshot...');
- // TODO: temporarily set all screenshot sizes to 600px, until we find a solution
- ScreenshotHandler.findAndOptimizeScreenshot(data.params.options.screenshot, 600)
- .then(function(screenshotBuffer) {
- debug('Screenshot optimized, now saving...');
-
- return options.saveScreenshotFn('screenshot.jpg', screenshotBuffer);
- })
- .then(function(response) {
- debug('Screenshot saved');
- debug(response);
- // Remove uneeded temp screenshot path
- delete data.params.options.screenshot;
- })
- .catch(function(err) {
- // It's ok if we can't save the screenshot
- debug('Screenshot could not be saved');
- debug(err);
- })
- .finally(function() {
- deferred.resolve(data);
- });
- } else {
- deferred.resolve(data);
- }
- })
- .catch(function(err) {
- deferred.reject(err);
- });
- }
- return deferred.promise;
- };
- module.exports = yellowLabTools;
- module.exports.version = packageJson.version;
|