dean992008 / gulp-opencart-refresh

0 stars 4 forks source link

Use cookie for Opencart 2.3 #3

Open Perfer opened 6 years ago

Perfer commented 6 years ago

With Opencart 2.3 gulp-opencart-refresh not work without cookie. This code fix it:

const request = require('request'); const through = require('through2').obj; const gutil = require('gulp-util'); const getQueryParam = require('get-query-param');

var options; var cookie_jar = request.jar();

function getKey(){ return new Promise((resolve, reject) => { request({ url: options.url + '/admin/index.php?route=common/login', jar: cookie_jar, method: 'POST', form: { username: options.login, password: options.password } }) .on('response', (response)=>{ resolve(getQueryParam('token', response.headers.location)); }) .on('error', (err)=>{ reject(err); }); }); }

function refreshCache(key){ return new Promise((resolve, reject) => { request({ url: options.url + '/admin/index.php?route=extension/modification/refresh&token=' + key, jar: cookie_jar, method: 'GET' }) .on('response', (response)=>{ resolve(key); }) .on('error', (err)=>{ reject(err); });

});

}

function logout(key){ return new Promise((resolve, reject) => { request({ url: options.url + '/admin/index.php?route=common/logout&token=' + key, jar: cookie_jar, method: 'GET' }) .on('response', (response)=>{ resolve(true); }) .on('error', (err)=>{ reject(err); }); }); }

function opencartRefresh(setting) { if (!setting.url) { throw new gutil.PluginError('gulp-opencart-refresh', 'url is required!'); } if (!setting.login) { throw new gutil.PluginError('gulp-opencart-refresh', 'login is required!'); } if (!setting.password) { throw new gutil.PluginError('gulp-opencart-refresh', 'password is required!'); } options = setting;

getKey()
    .then(refreshCache)
    .then(logout)
    .catch((error)=>{
        console.log(error);
    });

return through(function (file, encoding, callback) { callback(); });

}

module.exports = opencartRefresh;

dean992008 commented 6 years ago

I'm very glad that you want to help make this plugin better. Please make a pull request for that I can merge your and my changes. Thank you.