browserstack-connector
Version:
Helps connect the local machine to BrowserStack and start a remote browser.
76 lines (49 loc) • 1.92 kB
JavaScript
var _inherits = require('babel-runtime/helpers/inherits').default;
var _classCallCheck = require('babel-runtime/helpers/class-call-check').default;
var _interopRequireDefault = require('babel-runtime/helpers/interop-require-default').default;
exports.__esModule = true;
var _express = require('express');
var _express2 = _interopRequireDefault(_express);
var _http = require('http');
var _http2 = _interopRequireDefault(_http);
var _bodyParser = require('body-parser');
var _bodyParser2 = _interopRequireDefault(_bodyParser);
var _events = require('events');
var Hub = (function (_EventEmitter) {
_inherits(Hub, _EventEmitter);
function Hub(port) {
var _this = this;
_classCallCheck(this, Hub);
_EventEmitter.call(this);
this.app = _express2.default().use(_bodyParser2.default.urlencoded({ extended: false }));
this.appServer = _http2.default.createServer(this.app).listen(port);
this.sockets = [];
this._setupRoutes();
var handler = function (socket) {
_this.sockets.push(socket);
socket.on('close', function () {
_this.sockets.splice(_this.sockets.indexOf(socket), 1);
});
};
this.appServer.on('connection', handler);
}
Hub.prototype._setupRoutes = function _setupRoutes() {
var _this2 = this;
this.app.get('/:id', function (req, res) {
var url = req.query.url;
var urlIdentifier = req.params.id;
_this2.emit('browser-opened', urlIdentifier);
return res.redirect(url);
});
};
Hub.prototype.close = function close() {
this.appServer.close();
this.sockets.forEach(function (socket) {
socket.destroy();
});
};
return Hub;
})(_events.EventEmitter);
exports.default = Hub;
module.exports = exports.default;
;