Thank you for great help! I was able to refactor it into following:
//Extend current token till end of the next month
Parse.Cloud.define("extendSession", async (request) => {
const mySessionToken = request.headers["x-parse-session-token"];
let mySessionID;
// get current session ID
try {
let response = await fetch(`${process.env.SERVER_URL}/sessions/me`, {
method: 'GET',
headers: {
'X-Parse-Application-Id': process.env.APP_ID,
'X-Parse-REST-API-Key': process.env.REST_API_KEY,
'X-Parse-Session-Token': mySessionToken,
'X-Parse-Master-Key' : process.env.MASTER_KEY
}
});
mySessionID = response.data.objectId;
} catch (err) {
request.log.error(`error fetching session ${err}`);
return null;
}
// change expiration Date
const dateNow = new Date();
//last day of next month (setting day 0 of month after next one)
const newDate = new Date(dateNow.getFullYear(), dateNow.getMonth() + 2, 0);
let newSessionPayload = {
expiresAt: {"__type": "Date", "iso": newDate.toISOString()}
}
//save new payload
try {
await fetch(`${process.env.SERVER_URL}/sessions/${mySessionID}`, {
method: 'PUT',
headers: {
'X-Parse-Application-Id': process.env.APP_ID,
'X-Parse-REST-API-Key': process.env.REST_API_KEY,
'X-Parse-Session-Token': mySessionToken,
'X-Parse-Master-Key' : process.env.MASTER_KEY
},
body: newSessionPayload
});
} catch (err) {
request.log.error(`error saving extended session ${err}`);
return null;
}
return newDate;
});
But I think I missed to declare something as it throws error for the first try:
- 2021-09-08T07:45:32.866Z - error fetching session ReferenceError: fetch is not defined
Adding import fetch from "node-fetch";
above the function case the following error:
- 2021-09-08T07:56:05.915Z - Parse error: Invalid function: “extendSession”
probably due to following system error:
Error loading your cloud code:
/usr/src/app/data/cloud/main.js:8
import fetch from “node-fetch”;
^^^^^^
Does it needs to be declared in package.json
? Then I could import perhaps even axios and use the original posted code.