@jingbof/rets-client
Version:
RETS (Real Estate Transaction Standards) Client in Typescript
87 lines • 3.71 kB
JavaScript
;
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
if (typeof b !== "function" && b !== null)
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.LoginParser = void 0;
var url_1 = require("url");
var xmlr_1 = require("@aequilibrium/xmlr");
var types_1 = require("../types");
var Status;
(function (Status) {
Status["Waiting"] = "";
Status["CollectingActions"] = "actions";
})(Status || (Status = {}));
var LINE_SPLIT = /\n/;
var KEY_SPLIT = /=/;
var LoginParser = /** @class */ (function (_super) {
__extends(LoginParser, _super);
function LoginParser(baseAction) {
var _this = _super.call(this) || this;
_this.actions = {};
_this.status = Status.Waiting;
_this.baseAction = baseAction;
_this.on('startElement', _this.startElement);
_this.on('text', _this.text);
return _this;
}
LoginParser.prototype.startElement = function (name, attrs) {
// console.log('LoginParser.startElement', name, attrs)
switch (name) {
case types_1.RetsKeys.Rets:
if ((attrs === null || attrs === void 0 ? void 0 : attrs.ReplyCode) && (attrs === null || attrs === void 0 ? void 0 : attrs.ReplyCode) !== '0') {
this.emit('error', new Error("Error during login [".concat(JSON.stringify(attrs), "]")));
}
break;
case types_1.RetsKeys.Response:
this.status = Status.CollectingActions;
break;
default:
throw new Error("Unexpected Element: [".concat(name, "] [").concat(JSON.stringify(attrs), "]"));
}
};
LoginParser.prototype.text = function (text) {
var _this = this;
if (this.status === Status.CollectingActions) {
var lines = text.split(LINE_SPLIT);
lines.forEach(function (line) {
var _a = line.split(KEY_SPLIT), key = _a[0], value = _a[1];
// console.log('LoginParser.text', key, '||', value)
if (Object.keys(types_1.RetsAction).includes(key)) {
var baseUrl = _this.baseAction.url;
// console.log('LoginParser.isRetsAction', baseUrl)
var parsedURL = new url_1.URL(baseUrl);
parsedURL.pathname = value;
var url = parsedURL.toString();
_this.actions[key] = __assign(__assign({}, _this.baseAction), { url: url });
}
});
}
};
return LoginParser;
}(xmlr_1.Parser));
exports.LoginParser = LoginParser;
//# sourceMappingURL=LoginParser.js.map