ngx-hybrid-soap
Version:
SOAP service for Angular
59 lines • 6.41 kB
JavaScript
export class Multipart {
constructor() {
this.preambleCRLF = true;
this.postambleCRLF = true;
}
build(parts, boundary) {
const body = [];
function add(part) {
if (typeof part === 'number') {
part = part.toString();
}
return body.push(part);
}
if (this.preambleCRLF) {
add('\r\n');
}
parts.forEach(function (part) {
let preamble = '--' + boundary + '\r\n';
Object.keys(part).forEach(function (key) {
if (key === 'body') {
return;
}
preamble += key + ': ' + part[key] + '\r\n';
});
preamble += '\r\n';
add(preamble);
add(part.body);
add('\r\n');
});
add('--' + boundary + '--');
if (this.postambleCRLF) {
add('\r\n');
}
const size = body.map((part) => {
if (typeof part === 'string') {
return part.length;
}
else {
return part.byteLength;
}
}).reduce((a, b) => a + b, 0);
let uint8array = new Uint8Array(size);
let i = 0;
body.forEach((part) => {
if (typeof part === 'string') {
for (let j = 0; j < part.length; i++, j++) {
uint8array[i] = part.charCodeAt(j) & 0xff;
}
}
else {
for (let j = 0; j < part.byteLength; i++, j++) {
uint8array[i] = part[j];
}
}
});
return uint8array.buffer;
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGlwYXJ0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNvYXAvc3JjL2xpYi9zb2FwL211bHRpcGFydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sU0FBUztJQUF0QjtRQUNFLGlCQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLGtCQUFhLEdBQUcsSUFBSSxDQUFDO0lBeUR2QixDQUFDO0lBdkRDLEtBQUssQ0FBQyxLQUFLLEVBQUUsUUFBUTtRQUNuQixNQUFNLElBQUksR0FBRyxFQUFFLENBQUM7UUFFaEIsU0FBUyxHQUFHLENBQUUsSUFBSTtZQUNoQixJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO2dCQUM3QixJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3pCLENBQUM7WUFDRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDeEIsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3RCLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUNiLENBQUM7UUFFRCxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsSUFBSTtZQUMxQixJQUFJLFFBQVEsR0FBRyxJQUFJLEdBQUcsUUFBUSxHQUFHLE1BQU0sQ0FBQztZQUN4QyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLEdBQUc7Z0JBQ3JDLElBQUksR0FBRyxLQUFLLE1BQU0sRUFBRSxDQUFDO29CQUFDLE9BQU07Z0JBQUMsQ0FBQztnQkFDOUIsUUFBUSxJQUFJLEdBQUcsR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQTtZQUM3QyxDQUFDLENBQUMsQ0FBQztZQUNILFFBQVEsSUFBSSxNQUFNLENBQUM7WUFDbkIsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ2QsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNmLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNkLENBQUMsQ0FBQyxDQUFDO1FBQ0gsR0FBRyxDQUFDLElBQUksR0FBRyxRQUFRLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFFNUIsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDdkIsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2QsQ0FBQztRQUVELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUM3QixJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO2dCQUM3QixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUE7WUFDcEIsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztZQUN6QixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUU5QixJQUFJLFVBQVUsR0FBRyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDVixJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDcEIsSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDN0IsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztvQkFDMUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO2dCQUM1QyxDQUFDO1lBQ0gsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7b0JBQzlDLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzFCLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLFVBQVUsQ0FBQyxNQUFNLENBQUM7SUFDM0IsQ0FBQztDQUVGIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIE11bHRpcGFydCAge1xuICBwcmVhbWJsZUNSTEYgPSB0cnVlO1xuICBwb3N0YW1ibGVDUkxGID0gdHJ1ZTtcblxuICBidWlsZChwYXJ0cywgYm91bmRhcnkpIHtcbiAgICBjb25zdCBib2R5ID0gW107XG5cbiAgICBmdW5jdGlvbiBhZGQgKHBhcnQpIHtcbiAgICAgIGlmICh0eXBlb2YgcGFydCA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgcGFydCA9IHBhcnQudG9TdHJpbmcoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBib2R5LnB1c2gocGFydClcbiAgICB9XG5cbiAgICBpZiAodGhpcy5wcmVhbWJsZUNSTEYpIHtcbiAgICAgIGFkZCgnXFxyXFxuJylcbiAgICB9XG5cbiAgICBwYXJ0cy5mb3JFYWNoKGZ1bmN0aW9uIChwYXJ0KSB7XG4gICAgICBsZXQgcHJlYW1ibGUgPSAnLS0nICsgYm91bmRhcnkgKyAnXFxyXFxuJztcbiAgICAgIE9iamVjdC5rZXlzKHBhcnQpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICBpZiAoa2V5ID09PSAnYm9keScpIHsgcmV0dXJuIH1cbiAgICAgICAgcHJlYW1ibGUgKz0ga2V5ICsgJzogJyArIHBhcnRba2V5XSArICdcXHJcXG4nXG4gICAgICB9KTtcbiAgICAgIHByZWFtYmxlICs9ICdcXHJcXG4nO1xuICAgICAgYWRkKHByZWFtYmxlKTtcbiAgICAgIGFkZChwYXJ0LmJvZHkpO1xuICAgICAgYWRkKCdcXHJcXG4nKTtcbiAgICB9KTtcbiAgICBhZGQoJy0tJyArIGJvdW5kYXJ5ICsgJy0tJyk7XG5cbiAgICBpZiAodGhpcy5wb3N0YW1ibGVDUkxGKSB7XG4gICAgICBhZGQoJ1xcclxcbicpO1xuICAgIH1cblxuICAgIGNvbnN0IHNpemUgPSBib2R5Lm1hcCgocGFydCkgPT4ge1xuICAgICAgaWYgKHR5cGVvZiBwYXJ0ID09PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gcGFydC5sZW5ndGhcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBwYXJ0LmJ5dGVMZW5ndGg7XG4gICAgICB9XG4gICAgfSkucmVkdWNlKChhLCBiKSA9PiBhICsgYiwgMCk7XG5cbiAgICBsZXQgdWludDhhcnJheSA9IG5ldyBVaW50OEFycmF5KHNpemUpO1xuICAgIGxldCBpID0gMDtcbiAgICBib2R5LmZvckVhY2goKHBhcnQpID0+IHtcbiAgICAgIGlmICh0eXBlb2YgcGFydCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBwYXJ0Lmxlbmd0aDsgaSsrLCBqKyspIHtcbiAgICAgICAgICB1aW50OGFycmF5W2ldID0gcGFydC5jaGFyQ29kZUF0KGopICYgMHhmZjtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBwYXJ0LmJ5dGVMZW5ndGg7IGkrKywgaisrKSB7XG4gICAgICAgICAgdWludDhhcnJheVtpXSA9IHBhcnRbal07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gdWludDhhcnJheS5idWZmZXI7XG4gIH1cblxufVxuIl19