Search This Blog

Welcome to Machers Blog

Blogging the world of Technology and Testing which help people to build their career.

Tuesday, April 21, 2026

api calls

async putResponseJsonWithHeaders( context, token, url, headers = {}, params = {}, // ✅ JSON body queryParams = {} // ✅ query params ) { if (!context) throw new Error("context is required"); // ✅ Build query string const queryString = Object.entries(queryParams) .filter(([_, v]) => v !== undefined && v !== null) .map(([k, v]) => `${encodeURIComponent(k)}=${encodeURIComponent(v)}`) .join("&"); const finalUrl = queryString ? `${url}?${queryString}` : url; // ✅ Ensure headers are string const safeHeaders = { Authorization: `Bearer ${token}`, "Content-Type": "application/json", ...Object.fromEntries( Object.entries(headers).map(([k, v]) => [k, String(v)]) ) }; // 🔥 Debug (optional) console.log("POST URL:", finalUrl); // console.log("Headers:", safeHeaders); console.log("Body:", params); console.log("Query Params:", queryParams); const response = await context.request.post(finalUrl, { headers: safeHeaders, data: params, queryParams: queryParams }); // ✅ Safe response parsing let responseBody; try { responseBody = await response.json(); } catch { responseBody = await response.text(); } return { status: response.status(), ok: response.ok(), headers: response.headers(), body: responseBody, raw: response }; } async postResponseJsonWithHeaders( context, token, url, headers = {}, params = {}, // ✅ JSON body queryParams = {} // ✅ query params ) { if (!context) throw new Error("context is required"); // ✅ Build query string const queryString = Object.entries(queryParams) .filter(([_, v]) => v !== undefined && v !== null) .map(([k, v]) => `${encodeURIComponent(k)}=${encodeURIComponent(v)}`) .join("&"); const finalUrl = queryString ? `${url}?${queryString}` : url; // ✅ Ensure headers are string const safeHeaders = { Authorization: `Bearer ${token}`, "Content-Type": "application/json", ...Object.fromEntries( Object.entries(headers).map(([k, v]) => [k, String(v)]) ) }; // 🔥 Debug (optional) console.log("PUT URL:", finalUrl); // console.log("Headers:", safeHeaders); console.log("Body:", params); console.log("Query Params:", queryParams); const response = await context.request.put(finalUrl, { headers: safeHeaders, data: params, queryParams: queryParams }); // ✅ Safe response parsing let responseBody; try { responseBody = await response.json(); } catch { responseBody = await response.text(); } return { status: response.status(), ok: response.ok(), headers: response.headers(), body: responseBody, raw: response }; } async getResponseJson(context, token, url, params = {}) { console.log('method is', 'getResponseJson', 'get method') const response = await context.request.get(url, { headers: { Authorization: `Bearer ${token}`, Accept: "*/*", }, params: params }); logger.info(`URL is ${await response.url()}`); logger.info(`response is ${await response.text()}`); logger.info(`status ${response.status()}`); if (!response.ok()) { // expect([STATUS_CODES.BAD_REQUEST, STATUS_CODES.NOT_FOUND]).toContain(await response.status()); // expect(await response.status()).not.toBe(200); // expect(`${await response.status()}`).toBe("400"); expect(`${await response.status()}`).not.toBe("200") // throw new Error(`GET Call failed: ${response.status()} - ${await response.text()}`); }else{expect(`${await response.status()}`).toBe("200");} const responseData = await response.json(); return responseData; } async sendMultipartUsersInvitationsRequestModel(context, url, token, payload, fileBuffer) { const response = await context.request.post(url, { headers: { Authorization: `Bearer ${token}`, Accept: "*/*", }, multipart: { usersInvitationsRequestModel: { name: `usersInvitationsRequestModel`, mimeType: "application/json", buffer: Buffer.from(JSON.stringify(payload)), }, profileImg: { name: "user.png", mimeType: "image/png", buffer: fileBuffer, }, timeZone: "Asia/Calcutta", }, }); console.log("resp", JSON.stringify(payload)); return response; } async sendMultipartRequest(context, url, token, payload, options = {}) { const { timeZone = "Asia/Calcutta", // Default fallback modelName = "usersInvitationsRequestModel", // Dynamic field name fileBuffer = null, fileName = "document.pdf" } = options; const multipart = { [modelName]: { // Dynamic field name ✅ name: modelName, mimeType: "application/json", buffer: Buffer.from(JSON.stringify(payload)) }, timeZone: timeZone // Dynamic timezone ✅ }; // Add file if provided if (fileBuffer) { multipart.attachment = { name: fileName, mimeType: 'application/pdf', buffer: fileBuffer }; } const response = await context.request.post(url, { headers: { Authorization: `Bearer ${token}`, Accept: "*/*" }, multipart }); logger.info(`Status: ${response.status()}, URL: ${await response.url()}`); return response; }

No comments: