async query()

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;
	}