scrape-indeed
Version:
Scrape ca.indeed.com job postings.
67 lines (55 loc) • 3.12 kB
JavaScript
/*
Author: Adam Sinclair
Date: January 24th 2017
Purpose:
This file serves as the custom utility library.
For now, any "random" utility method will be stored
in this object. If I notice there are common methods being
stored, I will write a separate library with related methods.
*/
var https = require('https');
var utility = {
// Makes an HTTPS call to whatever host/path is specified.
// Uses promises to allow easy asynchronous control flow.
// Returns a resolved object with received data.
// Returns a reject object with error message.
getHTTPS: function(host, queryString) {
return new Promise(function(resolve, reject) {
if(host === undefined || host === null) {
reject(new Error('_util.getHTTPS() -- `host` is undefined or null.'));
return;
} else if(queryString === undefined || queryString === null) {
queryString = '';
}
// Request options
var get_options = {
host: host,
path: queryString,
method: 'GET',
headers: {
'Content-Security-Policy': 'default-src *; connect-src \'self\' static.licdn.com media.licdn.com static-exp1.licdn.com static-exp2.licdn.com media-exp1.licdn.com media-exp2.licdn.com https://media-src.linkedin.com/media/ www.linkedin.com s.c.lnkd.licdn.com m.c.lnkd.licdn.com s.c.exp1.licdn.com s.c.exp2.licdn.com m.c.exp1.licdn.com m.c.exp2.licdn.com wss://*.linkedin.com dms.licdn.com; img-src data: blob: *; font-src data: *; style-src \'unsafe-inline\' \'self\' static-src.linkedin.com *.licdn.com; script-src \'report-sample\' \'unsafe-inline\' \'unsafe-eval\' \'self\' platform.linkedin.com spdy.linkedin.com static-src.linkedin.com *.ads.linkedin.com *.licdn.com static.chartbeat.com www.google-analytics.com ssl.google-analytics.com bcvipva02.rightnowtech.com www.bizographics.com sjs.bizographics.com js.bizographics.com d.la4-c1-was.salesforceliveagent.com slideshare.www.linkedin.com; object-src \'none\'; media-src blob: *; child-src blob: lnkd-communities: voyager: *; frame-ancestors \'self\'; report-uri https://www.linkedin.com/lite/contentsecurity?f=l',
'Content-Type': 'text/html; charset=utf-8',
'Transfer-Encoding': 'chunked'
}
};
var req = https.get(get_options, function(res) {
var dataChunk = '';
// When data is received
res.on('data', function(chunk) {
dataChunk += chunk;
});
// When there is an error
res.on('error', function(err) {
reject(new Error('_util.getHTTPS() -- ' + err));
});
// When the response is completed
res.on('end', function() {
resolve(dataChunk);
});
});
// Submit the request
req.end();
});
}
};
module.exports = utility;