Skip to content
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 3 additions & 4 deletions express/api_routes.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
const { extension } = require('./extension');
const express = require('express');
const { sessionMiddleware, partnerSessionMiddleware } = require('./middleware/session_middleware');
const { ApplicationConfig, ApplicationClient } = require("@gofynd/fdk-client-javascript");
const { ApplicationClient } = require("@gofynd/fdk-client-javascript");


function setupProxyRoutes(configData) {
Expand All @@ -18,13 +18,12 @@ function setupProxyRoutes(configData) {
}
if (req.headers["x-application-data"]) {
req.application = JSON.parse(req.headers["x-application-data"]);
req.applicationConfig = new ApplicationConfig({
req.applicationClient = new ApplicationClient({
applicationID: req.application._id,
applicationToken: req.application.token,
domain: extension.cluster,
logLevel: configData.debug === true? "debug": null
logLevel: configData.debug === true ? "debug" : null
});
req.applicationClient = new ApplicationClient(req.applicationConfig);
}
next();
} catch (error) {
Expand Down
69 changes: 43 additions & 26 deletions express/extension.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
const validator = require('validator');
const { FdkInvalidExtensionConfig } = require("./error_code");
const urljoin = require('url-join');
const { PlatformConfig, PlatformClient, PartnerConfig, PartnerClient } = require("@gofynd/fdk-client-javascript");
const { PlatformClient, PartnerClient } = require("@gofynd/fdk-client-javascript");
const { WebhookRegistry } = require('./webhook');
const logger = require('./logger');
const { fdkAxios } = require('@gofynd/fdk-client-javascript/sdk/common/AxiosHelper');
Expand Down Expand Up @@ -110,40 +110,48 @@ class Extension {
if (!this._isInitialized){
await this.initialize(this.configData);
}
let platformConfig = new PlatformConfig({

// Create client without session for OAuth operations only
let platformClient = new PlatformClient({
companyId: parseInt(companyId),
domain: this.cluster,
apiKey: this.api_key,
apiSecret: this.api_secret,
useAutoRenewTimer: false,
logLevel: this.configData.debug === true? "debug": null
});
return platformConfig;


return platformClient.config; // Return just the config
}

async getPlatformClient(companyId, session) {
if (!this._isInitialized){
await this.initialize(this.configData);
}
const SessionStorage = require('./session/session_storage');

let platformConfig = await this.getPlatformConfig(companyId);
platformConfig.oauthClient.setToken(session);
platformConfig.oauthClient.token_expires_at = session.access_token_validity;
let platformClient = new PlatformClient({
companyId: parseInt(companyId),
domain: this.cluster,
apiKey: this.api_key,
apiSecret: this.api_secret,
useAutoRenewTimer: false,
logLevel: this.configData.debug === true? "debug": null
});

platformClient.config.oauthClient.setToken(session);
platformClient.config.oauthClient.token_expires_at = session.access_token_validity;

if (!session.access_token_validity || session.refresh_token) {
let ac_nr_expired = !session.access_token_validity? true: ((session.access_token_validity - new Date().getTime()) / 1000) <= 120;
if (ac_nr_expired) {
logger.debug(`Renewing access token for company ${companyId} with platform config ${logger.safeStringify(platformConfig)}`);
const renewTokenRes = await platformConfig.oauthClient.renewAccessToken(session.access_mode === 'offline');
renewTokenRes.access_token_validity = platformConfig.oauthClient.token_expires_at;
logger.debug(`Renewing access token for company ${companyId}`);
const renewTokenRes = await platformClient.config.oauthClient.renewAccessToken(session.access_mode === 'offline');
renewTokenRes.access_token_validity = platformClient.config.oauthClient.token_expires_at;
session.updateToken(renewTokenRes);
await SessionStorage.saveSession(session);
logger.debug(`Access token renewed for company ${companyId} with response ${logger.safeStringify(renewTokenRes)}`);
logger.debug(`Access token renewed for company ${companyId}`);
}
}
let platformClient = new PlatformClient(platformConfig);
platformClient.setExtraHeaders({
'x-ext-lib-version': `js/${version}`
})
Expand All @@ -154,16 +162,18 @@ class Extension {
if (!this._isInitialized) {
throw new FdkInvalidExtensionConfig("Extension not initialized due to invalid data");
}

let partnerConfig = new PartnerConfig({

// Create client without session for OAuth operations only
let partnerClient = new PartnerClient({
organizationId: organizationId,
domain: this.cluster,
apiKey: this.api_key,
apiSecret: this.api_secret,
useAutoRenewTimer: false,
logLevel: this.configData.debug === true? "debug": null
})
return partnerConfig;
logLevel: this.configData.debug === true? "debug": null
});

return partnerClient.config; // Return just the config
}

async getPartnerClient(organizationId, session) {
Expand All @@ -172,22 +182,29 @@ class Extension {
}
const SessionStorage = require('./session/session_storage');

let partnerConfig = this.getPartnerConfig(organizationId);
partnerConfig.oauthClient.setToken(session);
partnerConfig.oauthClient.token_expires_at = session.access_token_validity;
let partnerClient = new PartnerClient({
organizationId: organizationId,
domain: this.cluster,
apiKey: this.api_key,
apiSecret: this.api_secret,
useAutoRenewTimer: false,
logLevel: this.configData.debug === true? "debug": null
});

partnerClient.config.oauthClient.setToken(session);
partnerClient.config.oauthClient.token_expires_at = session.access_token_validity;

if (!session.access_token_validity || session.refresh_token) {
let ac_nr_expired = ((session.access_token_validity - new Date().getTime()) / 1000) <= 120;
if (ac_nr_expired) {
logger.debug(`Renewing access token for organization ${organizationId} with platform config ${logger.safeStringify(partnerConfig)}`);
const renewTokenRes = await partnerConfig.oauthClient.renewAccessToken(session.access_mode === 'offline');
renewTokenRes.access_token_validity = partnerConfig.oauthClient.token_expires_at;
logger.debug(`Renewing access token for organization ${organizationId}`);
const renewTokenRes = await partnerClient.config.oauthClient.renewAccessToken(session.access_mode === 'offline');
renewTokenRes.access_token_validity = partnerClient.config.oauthClient.token_expires_at;
session.updateToken(renewTokenRes);
await SessionStorage.saveSession(session);
logger.debug(`Access token renewed for organization ${organizationId} with response ${logger.safeStringify(renewTokenRes)}`);
logger.debug(`Access token renewed for organization ${organizationId}`);
}
}
let partnerClient = new PartnerClient(partnerConfig);
partnerClient.setExtraHeaders({
'x-ext-lib-version': `js/${version}`
})
Expand Down
8 changes: 3 additions & 5 deletions express/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ const setupRoutes = require("./routes");
const { setupProxyRoutes } = require("./api_routes");
const Session = require("./session/session");
const SessionStorage = require("./session/session_storage");
const { ApplicationConfig, ApplicationClient } = require("@gofynd/fdk-client-javascript");
const { ApplicationClient } = require("@gofynd/fdk-client-javascript");
const logger = require('./logger');

function setupFdk(data, syncInitialization) {
Expand Down Expand Up @@ -34,14 +34,12 @@ function setupFdk(data, syncInitialization) {
}

async function getApplicationClient(applicationId, applicationToken) {
let applicationConfig = new ApplicationConfig({
return new ApplicationClient({
applicationID: applicationId,
applicationToken: applicationToken,
domain: extension.cluster,
logLevel: data.debug === true? "debug": null
logLevel: data.debug === true ? "debug" : null
});
let applicationClient = new ApplicationClient(applicationConfig);
return applicationClient;
}

async function getPartnerClient(organizationId) {
Expand Down
Loading