UNPKG

job-scraper

Version:

An api that returns job prospect data scraped from indeed and monster

92 lines (73 loc) 4.94 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); var _jquery = require('jquery'); var _jquery2 = _interopRequireDefault(_jquery); var _htmlUtility = require('./html-utility'); var _jobProspect = require('./job-prospect'); var _indeedParser = require('./indeed-parser'); var _indeedParser2 = _interopRequireDefault(_indeedParser); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var Scraper = function () { function Scraper(jobTitle, city, state) { var type = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null; _classCallCheck(this, Scraper); this.jobTitle = jobTitle.replace(/ /g, '+').replace(/,/g, '%2C'); this.city = city.replace(/ /g, '+').replace(/,/g, '%2C'); this.state = state.replace(/ /g, '+').replace(/,/g, '%2C'); this.type = type; this.query = 'http://allorigins.me/get?url=https%3A//www.indeed.com/jobs%3Fq%3D' + this.jobTitle + '%26l%3D' + this.city + '%252C+' + this.state + '&callback=?'; } _createClass(Scraper, [{ key: 'init', value: function init() { var _this = this; return _jquery2.default.getJSON(this.query).then(function (data) { return data.contents.split('data-tn-component="organicJob"').map(function (el) { return el.replace(/\n/g, ''); }).map(function (el) { var prospect = new _jobProspect.JobProspect(_indeedParser2.default.getCompany(el), _indeedParser2.default.getLocation(el), _indeedParser2.default.getDate(el), _indeedParser2.default.getTitle(el), _indeedParser2.default.getUrl(el), null, _indeedParser2.default.getTruncation(el), el); _indeedParser2.default.setDescription(el, _this.query, prospect); return prospect; }); }).catch(function (err) { throw err; }); } }, { key: 'renderCards', value: function renderCards(arr) { var el = document.getElementById('job-scraper-box'); var preHtml = '<div class="job-scraper__modal-veil">\n <div class="job-scraper__modal-wrapper">\n <div class="job-scraper__modal-header">\n <p><span class="job-scraper__close-box">X</span></p>\n <p class="job-scraper__company"></p>\n <hr />\n <p class="job-scraper__title"></p>\n <p class="job-scraper__location"></p>\n <p class="job-scraper__date"></p>\n <p>. . .</p>\n </div>\n <div class="job-scraper__modal-container">\n </div>\n <div class="job-scraper__modal-footer">\n <a class="job-scraper__modal-apply" target="_blank">Apply to Job</a>\n </div>\n </div>\n </div>'; el.insertAdjacentHTML('beforebegin', preHtml); _htmlUtility.HtmlUtility.cache = { modal: document.getElementsByClassName('job-scraper__modal-veil')[0], company: document.getElementsByClassName('job-scraper__company')[0], job: document.getElementsByClassName('job-scraper__title')[0], location: document.getElementsByClassName('job-scraper__location')[0], date: document.getElementsByClassName('job-scraper__date')[0], content: document.getElementsByClassName('job-scraper__modal-container')[0], data: arr, apply: document.getElementsByClassName('job-scraper__modal-apply')[0] }; var html = '<div class="job-scraper__items-container">' + arr.map(_htmlUtility.HtmlUtility.produceCard).join('') + '</div>'; el.insertAdjacentHTML('beforebegin', html); el.parentElement.removeChild(el); var cardButtons = document.getElementsByClassName('job-scraper__item-button'); var closeModalButton = document.getElementsByClassName('job-scraper__close-box')[0]; closeModalButton.addEventListener('click', function () { _htmlUtility.HtmlUtility.closeModal(); }); for (var i = 0; i < cardButtons.length; i++) { cardButtons[i].addEventListener('click', function (e) { _htmlUtility.HtmlUtility.triggerModal(e.srcElement); }); } } }]); return Scraper; }(); exports.default = Scraper;