import FormData from 'form-data'; import fs from 'fs-extra'; import fetch from 'node-fetch'; import { API } from './API'; import { HTTP_METHOD } from './httpMethod'; export async function makeRequest(requestUrl: string, httpMethod: HTTP_METHOD, requestBody: any, headers: {}) { logger.info('RequestUrl : ' + requestUrl); logger.info('Http method: ' + httpMethod); logger.info('Request body:' + requestBody); const requestResponse = await fetch(requestUrl, { method: httpMethod, body: requestBody, headers: headers }); const responseText = await requestResponse.text(); logger.info('Response text:' + responseText); return responseText; } export async function uploadFile(cookies: any, csrfToken: any, baseUrl: string, filePath: string) { const requestUrl = baseUrl + API.VERSION + API.ATTACHMENT_UPLOAD; logger.debug(`Upload file: ${filePath} to ${requestUrl}`); const form = new FormData(); const buffer = fs.readFileSync(filePath); form.append('file', buffer, { filename: filePath.split('\\').pop().split('/').pop() }); const headers = { Cookie: cookies, 'x-csrf-token': csrfToken }; const responseText = await makeRequest(requestUrl, HTTP_METHOD.PUT, form, headers); logger.debug(`UploadFile responseText: ${responseText}`); return responseText; } export async function sendJsonRequest( cookies: any, csrfToken: any, requestUrl: string, httpMethod: HTTP_METHOD, requestBody: any ) { const headers = { Cookie: cookies, 'Content-Type': 'application/json', 'x-csrf-token': csrfToken }; const responseText = await makeRequest(requestUrl, httpMethod, requestBody, headers); logger.info('Response Text: ' + responseText); return JSON.parse(responseText); }