in src/lib/Zuora.ts [36:91]
async query(name: string, ...queries: Array<Query>) {
const exportQueries = queries.map((q) => {
return { ...q, type: 'zoqlexport' };
});
const options = {
method: 'POST',
uri: `${this.config.zuora.api.url}/apps/api/batch-query/`,
json: true,
body: {
format: 'csv',
version: '1.0',
name: 'Fulfilment-Queries',
encrypted: 'none',
useQueryLabels: 'true',
dateTimeUtc: 'true',
queries: exportQueries,
},
headers: {
...this.authorization,
'Content-Type': 'application/json',
},
};
const promise = new Promise((resolve, reject) => {
request(options, function (error, response, body) {
if (error) {
reject(error);
return;
}
console.log('statusCode:', response && response.statusCode);
if (response.statusCode !== 200) {
console.log(`error response status ${response.statusCode}`);
reject(
new NamedError(
'api_call_error',
`error response status ${response.statusCode}`,
),
);
} else if (body.errorCode) {
console.log(`zuora error! code: ${body.errorCode} : ${body.message}`);
reject(
new NamedError(
'api_call_error',
`zuora error! code: ${body.errorCode} : ${body.message}`,
),
);
} else {
console.log('jobId: ', body.id);
resolve(body.id);
}
});
});
return promise;
}