UNPKG

@fye/xservices-client

Version:

FYE Micros Xservices Client

120 lines (97 loc) 2.56 kB
/*! * twec-xservices-client * Copyright(c) 2014-2020 F.Y.E * Created by Nicholas Penree */ /** * Module dependencies. */ var Service = require('@fye/soap-client'); var util = require('util'); var clone = require('clone'); var isObject = require('is-object'); var pkg = require('../package.json'); /** * Creates an instance of an `XService`. * * @constructor * @augments Service * @this {XService} * @param {Object} opts * @api public */ function XService(opts, conns) { Service.call(this, opts, conns); this.registerMapping = {}; this.viewsPath = __dirname + '/../views'; this.namespace = 'ws'; this.requestOpts = { strictSSL: false, forever: true, //gzip: true, headers: { 'Accept': 'text/xml, multipart/related, text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2', 'Content-Type': 'text/xml;charset="utf-8"', 'User-Agent': util.format('%s/%s', pkg.name, pkg.version), 'Connection': 'keep-alive' } }; (Array.isArray(conns) ? conns : [conns]).filter(function(conn) { return isObject(conn); }).forEach(function(conn) { if (!this.registerMapping[conn.hostname]) { this.registerMapping[conn.hostname] = conn.register; } }, this); } /** * Inherit from `Service`. */ util.inherits(XService, Service); /** * Convert a string to a boolean value. * * @param {String} str * @return {String} * @api private */ XService.prototype._convertBool = function(str) { return (str === 'true'); }; XService.prototype._convertFields = function(opts) { var floats = opts.floats || []; var bools = opts.bools || []; var dates = opts.dates || []; var ints = opts.ints || []; var numbers = opts.numbers || []; var obj = clone(opts.obj); numbers.forEach(function(field) { obj[field] = Number(obj[field]); }, this); floats.forEach(function(field) { obj[field] = parseFloat(obj[field]); }, this); ints.forEach(function(field) { obj[field] = parseInt(obj[field], 10); }, this); bools.forEach(function(field) { obj[field] = this._convertBool(obj[field]); }, this); dates.forEach(function(field) { obj[field] = new Date(Date.parse(obj[field])); }, this); return obj; }; XService.prototype._locals = function(opts) { return function(conn) { var _opts = clone(opts); if (isObject(_opts) && isObject(_opts.serviceContext)) { _opts.serviceContext.register = this.registerMapping[conn.hostname]; } return _opts; }.bind(this); }; /** * Expose `XService`. */ module.exports = XService;