podchat-browser
Version:
Javascript SDK to use POD's Chat Service - Browser Only
155 lines (145 loc) • 7.92 kB
JavaScript
function SDKParams() {
return {
SERVICE_ADDRESSES: {
SSO_ADDRESS: 'https://accounts.pod.ir',
PLATFORM_ADDRESS: 'https://api.pod.ir/srv/core',
FILESERVER_ADDRESS: 'https://core.pod.ir',
PODSPACE_FILESERVER_ADDRESS: 'https://podspace.pod.ir',
MAP_ADDRESS: 'https://api.neshan.org/v2'
},
token: "111",
generalTypeCode: "default",
typeCodeOwnerId: null,
mapApiKey: '8b77db18704aa646ee5aaea13e7370f4f88b9e8c',
productEnv: 'undefined',
forceWaitQueueInMemory: false,
grantDeviceIdFromSSO: false,
deliveryIntervalPitch: 2000,
seenIntervalPitch: 2000,
systemMessageIntervalPitch: 1000,
messagesDelivery: {},
messagesSeen: {},
deliveryInterval: undefined,
seenInterval: undefined,
getImageFromLinkObjects: {},
locationPingTypes: {
'CHAT': 1,
'THREAD': 2,
'CONTACTS': 3
},
isTypingInterval: undefined,
protocol: 'websocket',
deviceId: undefined,
socketAddress: "",
serverName: "",
wsConnectionWaitTime: 0,
connectionRetryInterval: 0,
msgPriority: 1,
messageTtl: 10000,
reconnectOnClose: false,
asyncLogging: undefined,
chatPingMessageInterval: 20000,
getUserInfoTimeout: undefined,
connectionCheckTimeout: 0,
httpRequestTimeout: 0,
asyncRequestTimeout: 0,
connectionCheckTimeoutThreshold: undefined,
httpUploadRequestTimeout: 0,
actualTimingLog: false,
consoleLogging: false,
fullResponseObject: false,
webrtcConfig: null,
callOptions: {},
asyncPriority: undefined,
SERVICES_PATH: {
// Grant Devices
SSO_DEVICES: '/oauth2/grants/devices',
SSO_GENERATE_KEY: '/handshake/users/',
SSO_GET_KEY: '/handshake/keys/',
// Contacts
ADD_CONTACTS: '/nzh/addContacts',
UPDATE_CONTACTS: '/nzh/updateContacts',
REMOVE_CONTACTS: '/nzh/removeContacts',
SEARCH_CONTACTS: '/nzh/listContacts',
// Contacts
CONTACTS_V2_ADD: '/nzh/contact/addContacts',
CONTACTS_V2_UPDATE: '/nzh/contact/updateContacts',
CONTACTS_V2_REMOVE: '/nzh/removeContacts',
CONTACTS_V2_GET: '/nzh/contact/contacts',
// File/Image Upload and Download
UPLOAD_IMAGE: '/nzh/uploadImage',
GET_IMAGE: '/nzh/image/',
UPLOAD_FILE: '/nzh/uploadFile',
GET_FILE: '/nzh/file/',
// POD Drive Services
PODSPACE_UPLOAD_FILE_TO_USERGROUP: '/userGroup/uploadFile', //TODO: to be removed
PODSPACE_UPLOAD_FILE_TO_USERGROUP_NEW: '/api/usergroups/{userGroupHash}/files',
PODSPACE_UPLOAD_IMAGE_TO_USERGROUP: '/userGroup/uploadImage', //TODO: to be removed
PODSPACE_UPLOAD_IMAGE_TO_USERGROUP_NEW: '/api/usergroups/{userGroupHash}/images',
//PODSPACE_UPLOAD_FILE: '/nzh/drive/uploadFile',
//PODSPACE_UPLOAD_FILE_FROM_URL: '/nzh/drive/uploadFileFromUrl',
//TODO: maybe deprecated
PODSPACE_UPLOAD_IMAGE: '/nzh/drive/uploadImage', //TODO: to be removed
PODSPACE_UPLOAD_IMAGE_NEW: '/api/images',
PODSPACE_UPLOAD_FILE_NEW: '/api/files',
PODSPACE_DOWNLOAD_FILE: '/nzh/drive/downloadFile', //TODO: to be removed
PODSPACE_DOWNLOAD_FILE_NEW: '/api/files/{fileHash}',
PODSPACE_DOWNLOAD_IMAGE: '/nzh/drive/downloadImage', //TODO: to be removed
PODSPACE_DOWNLOAD_IMAGE_NEW: '/api/images/{fileHash}',
PODSPACE_DOWNLOAD_IMAGE_V2: '/api/v2/images/{fileHash}',
ADD_CONTACT_TYPE: '/nzh/biz/addContactType',
REGISTER_CONTACT_TYPE_IN_CHAT: '/nzh/manage/registerContactTypeForEvent',
CHECK_CONTACT_TYPE_REGISTERED: '/nzh/manage/checkContactTypeRegisteredForEvent',
DISABLE_CONTACT_TYPE: '/nzh/manage/disableContactEvent',
// Neshan Map
REVERSE: '/reverse',
SEARCH: '/search',
ROUTING: '/routing',
STATIC_IMAGE: '/static'
},
}
}
function initSdkParams(app, params) {
app.sdkParams.appId = params.appId || 'PodChat';
app.sdkParams.token = params.token || "111";
app.sdkParams.mapApiKey = params.mapApiKey || '8b77db18704aa646ee5aaea13e7370f4f88b9e8c';
app.sdkParams.productEnv = (typeof navigator != 'undefined') ? navigator.product : 'undefined';
app.sdkParams.forceWaitQueueInMemory = (params.forceWaitQueueInMemory && typeof params.forceWaitQueueInMemory === 'boolean') ? params.forceWaitQueueInMemory : false;
app.sdkParams.grantDeviceIdFromSSO = (params.grantDeviceIdFromSSO && typeof params.grantDeviceIdFromSSO === 'boolean')
? params.grantDeviceIdFromSSO
: false;
app.sdkParams.seenIntervalPitch = params.seenIntervalPitch || 2000;
app.sdkParams.systemMessageIntervalPitch = params.systemMessageIntervalPitch || 1000;
app.sdkParams.socketAddress = params.socketAddress;
app.sdkParams.serverName = params.serverName;
app.sdkParams.wsConnectionWaitTime = params.wsConnectionWaitTime;
app.sdkParams.connectionRetryInterval = params.connectionRetryInterval;
app.sdkParams.msgPriority = params.msgPriority;
app.sdkParams.messageTtl = params.messageTtl || 10000;
app.sdkParams.reconnectOnClose = params.reconnectOnClose;
app.sdkParams.asyncLogging = params.asyncLogging;
app.sdkParams.connectionCheckTimeout = params.connectionCheckTimeout;
app.sdkParams.httpRequestTimeout = (params.httpRequestTimeout >= 0) ? params.httpRequestTimeout : 0;
app.sdkParams.asyncRequestTimeout = (typeof params.asyncRequestTimeout === 'number' && params.asyncRequestTimeout >= 0) ? params.asyncRequestTimeout : 0;
app.sdkParams.connectionCheckTimeoutThreshold = params.connectionCheckTimeoutThreshold;
app.sdkParams.httpUploadRequestTimeout = (params.httpUploadRequestTimeout >= 0) ? params.httpUploadRequestTimeout : 0;
app.sdkParams.actualTimingLog = (params.asyncLogging.actualTiming && typeof params.asyncLogging.actualTiming === 'boolean')
? params.asyncLogging.actualTiming
: false;
app.sdkParams.consoleLogging = (params.asyncLogging.consoleLogging && typeof params.asyncLogging.consoleLogging === 'boolean')
? params.asyncLogging.consoleLogging
: false;
app.sdkParams.fullResponseObject = params.fullResponseObject || false;
app.sdkParams.webrtcConfig = (params.webrtcConfig ? params.webrtcConfig : null);
app.sdkParams.chatPingMessageInterval = params.chatPingMessageInterval;
app.sdkParams.protocol = params.protocol;
app.sdkParams.callRequestTimeout = (typeof params.callRequestTimeout === 'number' && params.callRequestTimeout >= 0) ? params.callRequestTimeout : 10000
app.sdkParams.callOptions = params.callOptions;
app.sdkParams.enableCallDivs = params.callOptions && typeof params.callOptions.enableCallDivs !== "undefined" ? params.callOptions.enableCallDivs : true;
params.ssoHost && (app.sdkParams.SERVICE_ADDRESSES.SSO_ADDRESS = params.ssoHost);
params.platformHost && (app.sdkParams.SERVICE_ADDRESSES.PLATFORM_ADDRESS = params.platformHost);
params.fileServer && (app.sdkParams.SERVICE_ADDRESSES.FILESERVER_ADDRESS = params.fileServer);
params.podSpaceFileServer && (app.sdkParams.SERVICE_ADDRESSES.PODSPACE_FILESERVER_ADDRESS = params.podSpaceFileServer);
params.mapServer && (app.sdkParams.SERVICE_ADDRESSES.MAP_ADDRESS = params.mapServer);
}
export {SDKParams, initSdkParams};