let session;
class Parser {
constructor() {
this.defaultConf = {
results: {
flat: [
['da', 'Domain Authority'],
['pa', 'Page Authority'],
['ss', 'Spam Score'],
]
},
results_format: '$query - DA: $da; PA: $pa; Spam Score: $ss\\n',
parsecodes: {
200: 1,
},
max_size: 200 * 1024,
login: '[email protected]',
password: 'qqq111',
};
}
*parse(set, results) {
yield this.mutex.lock();
if(!session) { //get session in one thread to share it for all
let response = yield this.request('POST', 'https://moz.com/login', {
'data[User][login_email]': this.conf.login,
'data[User][password]': this.conf.password,
});
if(response.success && response.data.match(/<title>Home - Moz/)) {
//login ok
}
else {
this.logger.put('Invalid account');
results.success = 0;
yield this.mutex.unlock();
return results;
};
session = this.cookies.getAll();
};
yield this.mutex.unlock();
this.cookies.setAll(session);
let response = yield this.request('GET', 'https://moz.com/researchtools/ose/api/comparisons', {
site: set.query
});
if(response.success) {
let json = JSON.parse(response.data);
results.da = json.data.root_domain[0].domain_authority ? Math.round(json.data.root_domain[0].domain_authority) : '-';
results.pa = json.data.page[0].page_authority ? Math.round(json.data.page[0].page_authority) : '-';
results.ss = json.data.subdomain[0].spam_score || '-';
}
results.success = response.success;
return results;
}
}