ngx-soap
Version:
SOAP service for Angular
59 lines • 6.28 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGlwYXJ0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNvYXAvc3JjL2xpYi9zb2FwL211bHRpcGFydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sU0FBUztJQUF0QjtRQUNFLGlCQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLGtCQUFhLEdBQUcsSUFBSSxDQUFDO0lBeUR2QixDQUFDO0lBdkRDLEtBQUssQ0FBQyxLQUFLLEVBQUUsUUFBUTtRQUNuQixNQUFNLElBQUksR0FBRyxFQUFFLENBQUM7UUFFaEIsU0FBUyxHQUFHLENBQUUsSUFBSTtZQUNoQixJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRTtnQkFDNUIsSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQzthQUN4QjtZQUNELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUN4QixDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3JCLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQTtTQUNaO1FBRUQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVLElBQUk7WUFDMUIsSUFBSSxRQUFRLEdBQUcsSUFBSSxHQUFHLFFBQVEsR0FBRyxNQUFNLENBQUM7WUFDeEMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxHQUFHO2dCQUNyQyxJQUFJLEdBQUcsS0FBSyxNQUFNLEVBQUU7b0JBQUUsT0FBTTtpQkFBRTtnQkFDOUIsUUFBUSxJQUFJLEdBQUcsR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQTtZQUM3QyxDQUFDLENBQUMsQ0FBQztZQUNILFFBQVEsSUFBSSxNQUFNLENBQUM7WUFDbkIsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ2QsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNmLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNkLENBQUMsQ0FBQyxDQUFDO1FBQ0gsR0FBRyxDQUFDLElBQUksR0FBRyxRQUFRLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFFNUIsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3RCLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUNiO1FBRUQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQzdCLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxFQUFFO2dCQUM1QixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUE7YUFDbkI7aUJBQU07Z0JBQ0wsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO2FBQ3hCO1FBQ0gsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUU5QixJQUFJLFVBQVUsR0FBRyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDVixJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDcEIsSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLEVBQUU7Z0JBQzVCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFO29CQUN6QyxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7aUJBQzNDO2FBQ0Y7aUJBQU07Z0JBQ0wsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUU7b0JBQzdDLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQ3pCO2FBQ0Y7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sVUFBVSxDQUFDLE1BQU0sQ0FBQztJQUMzQixDQUFDO0NBRUYiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgTXVsdGlwYXJ0ICB7XG4gIHByZWFtYmxlQ1JMRiA9IHRydWU7XG4gIHBvc3RhbWJsZUNSTEYgPSB0cnVlO1xuXG4gIGJ1aWxkKHBhcnRzLCBib3VuZGFyeSkge1xuICAgIGNvbnN0IGJvZHkgPSBbXTtcblxuICAgIGZ1bmN0aW9uIGFkZCAocGFydCkge1xuICAgICAgaWYgKHR5cGVvZiBwYXJ0ID09PSAnbnVtYmVyJykge1xuICAgICAgICBwYXJ0ID0gcGFydC50b1N0cmluZygpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJvZHkucHVzaChwYXJ0KVxuICAgIH1cblxuICAgIGlmICh0aGlzLnByZWFtYmxlQ1JMRikge1xuICAgICAgYWRkKCdcXHJcXG4nKVxuICAgIH1cblxuICAgIHBhcnRzLmZvckVhY2goZnVuY3Rpb24gKHBhcnQpIHtcbiAgICAgIGxldCBwcmVhbWJsZSA9ICctLScgKyBib3VuZGFyeSArICdcXHJcXG4nO1xuICAgICAgT2JqZWN0LmtleXMocGFydCkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgIGlmIChrZXkgPT09ICdib2R5JykgeyByZXR1cm4gfVxuICAgICAgICBwcmVhbWJsZSArPSBrZXkgKyAnOiAnICsgcGFydFtrZXldICsgJ1xcclxcbidcbiAgICAgIH0pO1xuICAgICAgcHJlYW1ibGUgKz0gJ1xcclxcbic7XG4gICAgICBhZGQocHJlYW1ibGUpO1xuICAgICAgYWRkKHBhcnQuYm9keSk7XG4gICAgICBhZGQoJ1xcclxcbicpO1xuICAgIH0pO1xuICAgIGFkZCgnLS0nICsgYm91bmRhcnkgKyAnLS0nKTtcblxuICAgIGlmICh0aGlzLnBvc3RhbWJsZUNSTEYpIHtcbiAgICAgIGFkZCgnXFxyXFxuJyk7XG4gICAgfVxuXG4gICAgY29uc3Qgc2l6ZSA9IGJvZHkubWFwKChwYXJ0KSA9PiB7XG4gICAgICBpZiAodHlwZW9mIHBhcnQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiBwYXJ0Lmxlbmd0aFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHBhcnQuYnl0ZUxlbmd0aDtcbiAgICAgIH1cbiAgICB9KS5yZWR1Y2UoKGEsIGIpID0+IGEgKyBiLCAwKTtcblxuICAgIGxldCB1aW50OGFycmF5ID0gbmV3IFVpbnQ4QXJyYXkoc2l6ZSk7XG4gICAgbGV0IGkgPSAwO1xuICAgIGJvZHkuZm9yRWFjaCgocGFydCkgPT4ge1xuICAgICAgaWYgKHR5cGVvZiBwYXJ0ID09PSAnc3RyaW5nJykge1xuICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHBhcnQubGVuZ3RoOyBpKyssIGorKykge1xuICAgICAgICAgIHVpbnQ4YXJyYXlbaV0gPSBwYXJ0LmNoYXJDb2RlQXQoaikgJiAweGZmO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHBhcnQuYnl0ZUxlbmd0aDsgaSsrLCBqKyspIHtcbiAgICAgICAgICB1aW50OGFycmF5W2ldID0gcGFydFtqXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiB1aW50OGFycmF5LmJ1ZmZlcjtcbiAgfVxuXG59XG4iXX0=