gads
Version:
An unofficial JS client library for the SOAP-based DFP Ads API
45 lines • 3.1 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const util_1 = require("./util");
const wsdlComplexTypeToMetaInterfaceTranslator_1 = require("./wsdlComplexTypeToMetaInterfaceTranslator");
const wsdlElementToMetaInterfaceTranslator_1 = require("./wsdlElementToMetaInterfaceTranslator");
const wsdlPortTypeOperationToMetaMethodSignature_1 = require("./wsdlPortTypeOperationToMetaMethodSignature");
const wsdlSimpleTypeToMetaTypeTranslator_1 = require("./wsdlSimpleTypeToMetaTypeTranslator");
class WsdlToMetaServiceTranslator {
constructor(wsdlComplexTypeToMetaInterfaceTranslator = new wsdlComplexTypeToMetaInterfaceTranslator_1.WsdlComplexTypeToMetaInterfaceTranslator(), wsdlElementToMetaInterfaceTranslator = new wsdlElementToMetaInterfaceTranslator_1.WsdlElementToMetaInterfaceTranslator(), wsdlPortTypeOperationToMetaMethodSignature = new wsdlPortTypeOperationToMetaMethodSignature_1.WsdlPortTypeOperationToMetaMethodSignature(), wsdlSimpleTypeToMetaTypeTranslator = new wsdlSimpleTypeToMetaTypeTranslator_1.WsdlSimpleTypeToMetaTypeTranslator()) {
this.wsdlComplexTypeToMetaInterfaceTranslator = wsdlComplexTypeToMetaInterfaceTranslator;
this.wsdlElementToMetaInterfaceTranslator = wsdlElementToMetaInterfaceTranslator;
this.wsdlPortTypeOperationToMetaMethodSignature = wsdlPortTypeOperationToMetaMethodSignature;
this.wsdlSimpleTypeToMetaTypeTranslator = wsdlSimpleTypeToMetaTypeTranslator;
}
translate(wsdl) {
return Promise.resolve().then(() => {
const name = wsdl['wsdl:definitions']['wsdl:service'].$.name;
const service = {
description: '',
name,
interfaces: {},
methods: {},
types: {}
};
const promises = [].concat(
// Add interfaces
util_1.toArray(wsdl['wsdl:definitions']['wsdl:types'].schema.complexType)
.map(v => this.wsdlComplexTypeToMetaInterfaceTranslator.translate(v))
.map(p => p.then(i => { service.interfaces[i.name] = i; })), util_1.toArray(wsdl['wsdl:definitions']['wsdl:types'].schema.element)
.map(v => this.wsdlElementToMetaInterfaceTranslator.translate(v))
.map(p => p.then(i => { service.interfaces[i.name] = i; })),
// Add methods
util_1.toArray(wsdl['wsdl:definitions']['wsdl:portType']['wsdl:operation']).map(v => this.wsdlPortTypeOperationToMetaMethodSignature.translate(v))
.map(p => p.then(m => { service.methods[m.name] = m; })),
// Add types
util_1.toArray(wsdl['wsdl:definitions']['wsdl:types'].schema.simpleType)
.map(v => this.wsdlSimpleTypeToMetaTypeTranslator.translate(v))
.map(p => p.then(t => { service.types[t.name] = t; })));
// Return service
return Promise.all(promises).then(() => service);
});
}
}
exports.WsdlToMetaServiceTranslator = WsdlToMetaServiceTranslator;
//# sourceMappingURL=wsdlToMetaServiceTranslator.js.map