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;
}
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment