const axios = require("axios"); module.exports = class Client { constructor(endpoint, model) { this.endpoint = endpoint; this.model = model; } async send(input) { return new Promise((resolve, reject) => { let data = JSON.stringify({ input: input, model: this.model, previous_response_id: this.previous_response_id, metadata: { channel: "text" }, }); let config = { method: "post", maxBodyLength: Infinity, url: this.endpoint, headers: { "Content-Type": "application/json", }, data: data, }; axios .request(config) .then((response) => { if (response.data && response.data.output) { if ( response.data.output.length > 0 && response.data.output[0].content.length > 0 ) { this.previous_response_id = response.data.id; resolve(response.data.output[0].content[0].text); } } else { resolve("No output received from server."); } }) .catch((error) => { reject(error); }); }); } };