@pazznetwork/ngx-chat
Version:
[](https://travis-ci.com/pazznetwork/ngx-chat) [](https://coveralls.io/github/pazzn
36 lines • 6.93 kB
JavaScript
export class XmppResponseError extends Error {
constructor(errorStanza) {
super(XmppResponseError.extractErrorTextFromErrorResponse(errorStanza, XmppResponseError.extractErrorDataFromErrorResponse(errorStanza)));
this.errorStanza = errorStanza;
const { code, type, condition } = XmppResponseError.extractErrorDataFromErrorResponse(errorStanza);
this.errorCode = code;
this.errorType = type;
this.errorCondition = condition;
}
static extractErrorDataFromErrorResponse(stanza) {
const errorElement = stanza.getChild('error');
const errorCode = Number(errorElement?.attrs.code) || undefined;
const errorType = errorElement?.attrs.type;
const errorCondition = errorElement
?.children
.filter(childElement => childElement.getName() !== 'text' &&
childElement.attrs.xmlns === XmppResponseError.ERROR_ELEMENT_NS)[0]
?.getName();
return {
code: errorCode,
type: errorType,
condition: errorCondition,
};
}
static extractErrorTextFromErrorResponse(stanza, { code, type, condition }) {
const additionalData = [
`errorCode: ${code ?? '[unknown]'}`,
`errorType: ${type ?? '[unknown]'}`,
`errorCondition: ${condition ?? '[unknown]'}`,
].join(', ');
const errorText = stanza.getChild('error')?.getChildText('text', XmppResponseError.ERROR_ELEMENT_NS) || 'Unknown error';
return `XmppResponseError: ${errorText}${additionalData ? ` (${additionalData})` : ''}`;
}
}
XmppResponseError.ERROR_ELEMENT_NS = 'urn:ietf:params:xml:ns:xmpp-stanzas';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieG1wcC1yZXNwb25zZS5lcnJvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2VydmljZXMvYWRhcHRlcnMveG1wcC94bXBwLXJlc3BvbnNlLmVycm9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxLQUFLO0lBTXhDLFlBQXFCLFdBQW1CO1FBQ3BDLEtBQUssQ0FDRCxpQkFBaUIsQ0FBQyxpQ0FBaUMsQ0FDL0MsV0FBVyxFQUNYLGlCQUFpQixDQUFDLGlDQUFpQyxDQUFDLFdBQVcsQ0FBQyxDQUNuRSxDQUNKLENBQUM7UUFOZSxnQkFBVyxHQUFYLFdBQVcsQ0FBUTtRQVFwQyxNQUFNLEVBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUMsR0FBRyxpQkFBaUIsQ0FBQyxpQ0FBaUMsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNqRyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUN0QixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUN0QixJQUFJLENBQUMsY0FBYyxHQUFHLFNBQVMsQ0FBQztJQUNwQyxDQUFDO0lBRU8sTUFBTSxDQUFDLGlDQUFpQyxDQUFDLE1BQWM7UUFLM0QsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQVcsQ0FBQztRQUN4RCxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxTQUFTLENBQUM7UUFDaEUsTUFBTSxTQUFTLEdBQUcsWUFBWSxFQUFFLEtBQUssQ0FBQyxJQUEwQixDQUFDO1FBQ2pFLE1BQU0sY0FBYyxHQUNoQixZQUFZO1lBQ1IsRUFBRSxRQUFRO2FBQ1QsTUFBTSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQ25CLFlBQVksQ0FBQyxPQUFPLEVBQUUsS0FBSyxNQUFNO1lBQ2pDLFlBQVksQ0FBQyxLQUFLLENBQUMsS0FBSyxLQUFLLGlCQUFpQixDQUFDLGdCQUFnQixDQUNsRSxDQUFDLENBQUMsQ0FBQztZQUNKLEVBQUUsT0FBTyxFQUFFLENBQUM7UUFFcEIsT0FBTztZQUNILElBQUksRUFBRSxTQUFTO1lBQ2YsSUFBSSxFQUFFLFNBQVM7WUFDZixTQUFTLEVBQUUsY0FBYztTQUM1QixDQUFDO0lBQ04sQ0FBQztJQUVPLE1BQU0sQ0FBQyxpQ0FBaUMsQ0FDNUMsTUFBYyxFQUNkLEVBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxTQUFTLEVBSXJCO1FBQ0QsTUFBTSxjQUFjLEdBQUc7WUFDbkIsY0FBYyxJQUFJLElBQUksV0FBVyxFQUFFO1lBQ25DLGNBQWMsSUFBSSxJQUFJLFdBQVcsRUFBRTtZQUNuQyxtQkFBbUIsU0FBUyxJQUFJLFdBQVcsRUFBRTtTQUNoRCxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNiLE1BQU0sU0FBUyxHQUNYLE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsWUFBWSxDQUFDLE1BQU0sRUFBRSxpQkFBaUIsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLGVBQWUsQ0FBQztRQUUxRyxPQUFPLHNCQUFzQixTQUFTLEdBQUcsY0FBYyxDQUFDLENBQUMsQ0FBQyxLQUFLLGNBQWMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUM1RixDQUFDOztBQTNEZSxrQ0FBZ0IsR0FBRyxxQ0FBcUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7U3RhbnphfSBmcm9tICcuLi8uLi8uLi9jb3JlL3N0YW56YSc7XG5cbmV4cG9ydCBjbGFzcyBYbXBwUmVzcG9uc2VFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgICBzdGF0aWMgcmVhZG9ubHkgRVJST1JfRUxFTUVOVF9OUyA9ICd1cm46aWV0ZjpwYXJhbXM6eG1sOm5zOnhtcHAtc3Rhbnphcyc7XG4gICAgcmVhZG9ubHkgZXJyb3JDb2RlPzogbnVtYmVyO1xuICAgIHJlYWRvbmx5IGVycm9yVHlwZT86IHN0cmluZztcbiAgICByZWFkb25seSBlcnJvckNvbmRpdGlvbj86IHN0cmluZztcblxuICAgIGNvbnN0cnVjdG9yKHJlYWRvbmx5IGVycm9yU3RhbnphOiBTdGFuemEpIHtcbiAgICAgICAgc3VwZXIoXG4gICAgICAgICAgICBYbXBwUmVzcG9uc2VFcnJvci5leHRyYWN0RXJyb3JUZXh0RnJvbUVycm9yUmVzcG9uc2UoXG4gICAgICAgICAgICAgICAgZXJyb3JTdGFuemEsXG4gICAgICAgICAgICAgICAgWG1wcFJlc3BvbnNlRXJyb3IuZXh0cmFjdEVycm9yRGF0YUZyb21FcnJvclJlc3BvbnNlKGVycm9yU3RhbnphKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICk7XG5cbiAgICAgICAgY29uc3Qge2NvZGUsIHR5cGUsIGNvbmRpdGlvbn0gPSBYbXBwUmVzcG9uc2VFcnJvci5leHRyYWN0RXJyb3JEYXRhRnJvbUVycm9yUmVzcG9uc2UoZXJyb3JTdGFuemEpO1xuICAgICAgICB0aGlzLmVycm9yQ29kZSA9IGNvZGU7XG4gICAgICAgIHRoaXMuZXJyb3JUeXBlID0gdHlwZTtcbiAgICAgICAgdGhpcy5lcnJvckNvbmRpdGlvbiA9IGNvbmRpdGlvbjtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBleHRyYWN0RXJyb3JEYXRhRnJvbUVycm9yUmVzcG9uc2Uoc3RhbnphOiBTdGFuemEpOiB7XG4gICAgICAgIGNvZGU/OiBudW1iZXIsXG4gICAgICAgIHR5cGU/OiBzdHJpbmcsXG4gICAgICAgIGNvbmRpdGlvbj86IHN0cmluZ1xuICAgIH0ge1xuICAgICAgICBjb25zdCBlcnJvckVsZW1lbnQgPSBzdGFuemEuZ2V0Q2hpbGQoJ2Vycm9yJykgYXMgU3RhbnphO1xuICAgICAgICBjb25zdCBlcnJvckNvZGUgPSBOdW1iZXIoZXJyb3JFbGVtZW50Py5hdHRycy5jb2RlKSB8fCB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IGVycm9yVHlwZSA9IGVycm9yRWxlbWVudD8uYXR0cnMudHlwZSBhcyBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IGVycm9yQ29uZGl0aW9uID1cbiAgICAgICAgICAgIGVycm9yRWxlbWVudFxuICAgICAgICAgICAgICAgID8uY2hpbGRyZW5cbiAgICAgICAgICAgICAgICAuZmlsdGVyKGNoaWxkRWxlbWVudCA9PlxuICAgICAgICAgICAgICAgICAgICBjaGlsZEVsZW1lbnQuZ2V0TmFtZSgpICE9PSAndGV4dCcgJiZcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRFbGVtZW50LmF0dHJzLnhtbG5zID09PSBYbXBwUmVzcG9uc2VFcnJvci5FUlJPUl9FTEVNRU5UX05TLFxuICAgICAgICAgICAgICAgIClbMF1cbiAgICAgICAgICAgICAgICA/LmdldE5hbWUoKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY29kZTogZXJyb3JDb2RlLFxuICAgICAgICAgICAgdHlwZTogZXJyb3JUeXBlLFxuICAgICAgICAgICAgY29uZGl0aW9uOiBlcnJvckNvbmRpdGlvbixcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBleHRyYWN0RXJyb3JUZXh0RnJvbUVycm9yUmVzcG9uc2UoXG4gICAgICAgIHN0YW56YTogU3RhbnphLFxuICAgICAgICB7Y29kZSwgdHlwZSwgY29uZGl0aW9ufToge1xuICAgICAgICAgICAgY29kZT86IG51bWJlcixcbiAgICAgICAgICAgIHR5cGU/OiBzdHJpbmcsXG4gICAgICAgICAgICBjb25kaXRpb24/OiBzdHJpbmdcbiAgICAgICAgfSk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGFkZGl0aW9uYWxEYXRhID0gW1xuICAgICAgICAgICAgYGVycm9yQ29kZTogJHtjb2RlID8/ICdbdW5rbm93bl0nfWAsXG4gICAgICAgICAgICBgZXJyb3JUeXBlOiAke3R5cGUgPz8gJ1t1bmtub3duXSd9YCxcbiAgICAgICAgICAgIGBlcnJvckNvbmRpdGlvbjogJHtjb25kaXRpb24gPz8gJ1t1bmtub3duXSd9YCxcbiAgICAgICAgXS5qb2luKCcsICcpO1xuICAgICAgICBjb25zdCBlcnJvclRleHQgPVxuICAgICAgICAgICAgc3RhbnphLmdldENoaWxkKCdlcnJvcicpPy5nZXRDaGlsZFRleHQoJ3RleHQnLCBYbXBwUmVzcG9uc2VFcnJvci5FUlJPUl9FTEVNRU5UX05TKSB8fCAnVW5rbm93biBlcnJvcic7XG5cbiAgICAgICAgcmV0dXJuIGBYbXBwUmVzcG9uc2VFcnJvcjogJHtlcnJvclRleHR9JHthZGRpdGlvbmFsRGF0YSA/IGAgKCR7YWRkaXRpb25hbERhdGF9KWAgOiAnJ31gO1xuICAgIH1cbn1cbiJdfQ==