UNPKG

podchat

Version:
1,142 lines (1,060 loc) 46.8 kB
import Utility from "../../utility/utility"; import {CHAT_ERRORS, imageExtentions, imageMimeTypes, SERVICES_PATH} from "../constants"; import Mime from "mime"; import SizeOf from "image-size"; // const https = require('https'); // const fs = require('fs'); function FileMethods(app) { function cancelFileDownload (params, callback) { if (params) { if (typeof params.uniqueId == 'string') { var uniqueId = params.uniqueId; app.store.httpRequestObject[eval('uniqueId')] && app.store.httpRequestObject[eval('uniqueId')].abort(); app.store.httpRequestObject[eval('uniqueId')] && delete (app.store.httpRequestObject[eval('uniqueId')]); callback && callback(uniqueId); } } return; } function getImageFromPodspaceV2(params, callback) { var downloadUniqueId = Utility.generateUUID(), getImageData = { size: params.size, quality: params.quality, crop: params.crop }; if (params) { if (params.hashCode && typeof params.hashCode == 'string') { getImageData.hash = params.hashCode; } else { callback({ hasError: true, error: 'Enter a file hash to get' }); return; } if (params.responseType === 'link') { var returnLink = app.sdkParams.SERVICE_ADDRESSES.PODSPACE_FILESERVER_ADDRESS + SERVICES_PATH.PODSPACE_DOWNLOAD_IMAGE_V2.replace('{fileHash}', params.hashCode) + `?size=${params.size}&quality=${params.quality}&crop=${params.crop}`; //+ SERVICES_PATH.PODSPACE_DOWNLOAD_IMAGE + `?hash=${params.hashCode}&_token_=${token}&_token_issuer_=1&size=${params.size}&quality=${params.quality}&crop=${params.crop}`; callback({ hasError: false, type: 'link', result: returnLink }); } else if (params.responseType === 'base64') { app.httpRequest.httpRequest({ url: app.sdkParams.SERVICE_ADDRESSES.PODSPACE_FILESERVER_ADDRESS + SERVICES_PATH.PODSPACE_DOWNLOAD_IMAGE_V2.replace('{fileHash}', params.hashCode) + `?size=${params.size}&quality=${params.quality}&crop=${params.crop}`, method: 'GET', uniqueId: downloadUniqueId, responseType: 'blob', headers: { 'Authorization': 'Bearer ' + app.sdkParams.token }, enableDownloadProgressEvents: params.enableDownloadProgressEvents, hashCode: params.hashCode //data: getImageData }, function (result) { if (!result.hasError) { var fr = new FileReader(); fr.onloadend = function () { callback({ hasError: result.hasError, type: 'base64', result: fr.result }); } fr.readAsDataURL(result); } else { callback({ hasError: true, result }); } }); return { uniqueId: downloadUniqueId, cancel: function () { cancelFileDownload({ uniqueId: downloadUniqueId }, function () { app.sdkParams.consoleLogging && console.log(`"${downloadUniqueId}" - Image download has been canceled!`); }); } }; } /* else if (params.responseType === 'file') { const options = { hostname: 'podspace.sandpod.ir', path: SERVICES_PATH.PODSPACE_DOWNLOAD_IMAGE_V2.replace('{fileHash}', params.hashCode) + `?size=${params.size}&quality=${params.quality}&crop=${params.crop}`, headers: { Authorization: 'Bearer ' + app.sdkParams.token } }; // console.log('=========== getImageFromPodspaceV2', params, app.sdkParams.SERVICE_ADDRESSES.PODSPACE_FILESERVER_ADDRESS // + SERVICES_PATH.PODSPACE_DOWNLOAD_IMAGE_V2.replace('{fileHash}', params.hashCode) + `?size=${params.size}&quality=${params.quality}&crop=${params.crop}`); console.log('=========== getImageFromPodspaceV2 ', options); https.get(options, (response) => { // response.pipe(params.fileStream); response.on("data", d => { console.log('got data', {d}) callback({ hasError: false, type: 'file', result: {chunk: d} }); }) let result = ''; // params.fileStream.on('finish', function() { // params.fileStream.close(); // close() is async, call cb after close completes. // // callback({ // hasError: false, // type: 'file', // // result: {done: true} // }); // }); // response.on('data', function (chunk) { // result += chunk; // }); // // response.on('end', function () { // console.log(result); // }); }).on('error', function(error) { // Handle errors callback({ hasError: true, type: 'file', result: {error} }); // fs.unlink(dest); // Delete the file async. (But we don't check the result) // if (cb) cb(err.message); }); // if (!result.hasError) { // callback({ // hasError: result.hasError, // type: 'blob', // result: result // }); // } else { // callback({ // hasError: true, // result // }); // } } */ else { // console.log('=========== getImageFromPodspaceV2', params, app.sdkParams.SERVICE_ADDRESSES.PODSPACE_FILESERVER_ADDRESS // + SERVICES_PATH.PODSPACE_DOWNLOAD_IMAGE_V2.replace('{fileHash}', params.hashCode) + `?size=${params.size}&quality=${params.quality}&crop=${params.crop}`); // console.log('getImageFromPodspaceV2 ====> ', app.sdkParams.SERVICE_ADDRESSES.PODSPACE_FILESERVER_ADDRESS // + SERVICES_PATH.PODSPACE_DOWNLOAD_IMAGE_V2.replace('{fileHash}', params.hashCode) + `?size=${params.size}&quality=${params.quality}&crop=${params.crop}`, // ); app.httpRequest.httpRequest({ url: app.sdkParams.SERVICE_ADDRESSES.PODSPACE_FILESERVER_ADDRESS + SERVICES_PATH.PODSPACE_DOWNLOAD_IMAGE_V2.replace('{fileHash}', params.hashCode) + `?size=${params.size}&quality=${params.quality}&crop=${params.crop}`, method: 'GET', responseType: 'blob', uniqueId: downloadUniqueId, headers: { 'Authorization': 'Bearer ' + app.sdkParams.token }, enableDownloadProgressEvents: params.enableDownloadProgressEvents, hashCode: params.hashCode //data: getImageData }, function (result) { if (!result.hasError) { callback({ hasError: result.hasError, type: 'blob', result: result }); } else { callback({ hasError: true, result }); } }); return { uniqueId: downloadUniqueId, cancel: function () { cancelFileDownload({ uniqueId: downloadUniqueId }, function () { app.sdkParams.consoleLogging && console.log(`"${downloadUniqueId}" - Image download has been canceled!`); }); } }; } } } function getFileFromPodspaceNew (params, callback) { var downloadUniqueId = Utility.generateUUID(), getFileData = {}; if (params) { if (params.hashCode && typeof params.hashCode == 'string') { getFileData.hash = params.hashCode; } else { callback({ hasError: true, error: 'Enter a file hash to get' }); return; } if (params.checkUserGroupAccess) { getFileData.checkUserGroupAccess = true; } } if (params.responseType === 'link') { var returnLink = app.sdkParams.SERVICE_ADDRESSES.PODSPACE_FILESERVER_ADDRESS + SERVICES_PATH.PODSPACE_DOWNLOAD_FILE_NEW.replace('{fileHash}', params.hashCode) + `?checkUserGroupAccess=true`; callback({ hasError: false, type: 'link', result: returnLink }); } else { app.httpRequest.httpRequest({ url: app.sdkParams.SERVICE_ADDRESSES.PODSPACE_FILESERVER_ADDRESS + SERVICES_PATH.PODSPACE_DOWNLOAD_FILE_NEW.replace('{fileHash}', params.hashCode) + `?checkUserGroupAccess=true`, method: 'GET', responseType: 'blob', uniqueId: downloadUniqueId, headers: { 'Authorization': 'Bearer ' + app.sdkParams.token }, enableDownloadProgressEvents: params.enableDownloadProgressEvents, hashCode: params.hashCode //data: getFileData }, function (result) { if (!result.hasError) { callback({ hasError: result.hasError, result: result, type: 'blob' }); } else { callback({ hasError: true }); } }); return { uniqueId: downloadUniqueId, cancel: function () { cancelFileDownload({ uniqueId: downloadUniqueId }, function () { app.sdkParams.consoleLogging && console.log(`"${downloadUniqueId}" - File download has been canceled!`); }); } }; } } /** * Get Image Download Link From PodSpace * * This functions gets an uploaded image download link from Pod Space File Server. * * @since 9.1.3 * @access private * * @param {string} hashCode HashCode of uploaded file * * @return {string} Image Link */ function getImageDownloadLinkFromPodspace (params, callback) { if (params) { if (params.hashCode && typeof params.hashCode == 'string') { var downloadUrl = app.sdkParams.SERVICE_ADDRESSES.PODSPACE_FILESERVER_ADDRESS + SERVICES_PATH.PODSPACE_DOWNLOAD_IMAGE + '?hash=' + params.hashCode; callback && callback({ hasError: false, downloadUrl: downloadUrl }); return downloadUrl; } else { callback && callback({ hasError: true, error: 'Enter a image hash to get download link!' }); return; } } } function cancelFileUpload (params, callback) { if (params) { if (typeof params.uniqueId == 'string') { var uniqueId = params.uniqueId; app.store.httpRequestObject[eval('uniqueId')] && app.store.httpRequestObject[eval('uniqueId')].abort(); app.store.httpRequestObject[eval('uniqueId')] && delete (app.store.httpRequestObject[eval('uniqueId')]); app.messageQueues.deleteFromChatUploadQueue({ message: { uniqueId: uniqueId } }, callback); } } return; } /** * Upload File To Pod Space * * Upload files to Pod Space Server * * @since 3.9.9 * @access private * * @param {string} fileName A name for the file * @param {file} file FILE: the file * @param {string} userGroupHash Unique identifier of threads on podspace * @param {string} token User Token * @param {string} _token_issuer_ Token Issuer * * @link * * @return {object} Uploaded File Object */ function uploadFileToPodspace (params, callback) { var fileName, fileType, fileSize, fileExtension, uploadUniqueId, uploadThreadId, userGroupHash; if (Utility.isNode()) { fileName = params.file.split('/') .pop(); fileType = Mime.getType(params.file); fileSize = app.fs.statSync(params.file).size; fileExtension = params.file.split('.') .pop(); } else { fileName = params.file.name; fileType = params.file.type; fileSize = params.file.size; fileExtension = params.file.name.split('.') .pop(); } var uploadFileData = {}; if (params) { if (typeof params.file !== 'undefined') { uploadFileData.file = params.file; } if (params.randomFileName) { uploadFileData.filename = Utility.generateUUID() + '.' + fileExtension; } else { uploadFileData.filename = fileName; } uploadFileData.fileSize = fileSize; if (parseInt(params.threadId) > 0) { uploadThreadId = params.threadId; uploadFileData.threadId = params.threadId; } else { uploadThreadId = 0; uploadFileData.threadId = 0; } if (typeof params.uniqueId == 'string') { uploadUniqueId = params.uniqueId; uploadFileData.uniqueId = params.uniqueId; } else { uploadUniqueId = Utility.generateUUID(); uploadFileData.uniqueId = uploadUniqueId; } if (typeof params.userGroupHash == 'string') { userGroupHash = params.userGroupHash; uploadFileData.userGroupHash = params.userGroupHash; } else { callback({ hasError: true, errorCode: 999, errorMessage: '[SDK] You need to enter a userGroupHash to be able to upload on PodSpace!' }); return; } if (typeof params.originalFileName == 'string') { uploadFileData.originalFileName = params.originalFileName; } else { uploadFileData.originalFileName = fileName; } } app.httpRequest.httpRequest({ url: app.sdkParams.SERVICE_ADDRESSES.PODSPACE_FILESERVER_ADDRESS + SERVICES_PATH.PODSPACE_UPLOAD_FILE_TO_USERGROUP, method: 'POST', headers: { '_token_': app.sdkParams.token, '_token_issuer_': 1 }, data: uploadFileData, uniqueId: uploadUniqueId }, function (result) { if (!result.hasError) { try { var response = (typeof result.result.responseText == 'string') ? JSON.parse(result.result.responseText) : result.result.responseText; callback({ hasError: response.hasError, result: response.result }); } catch (e) { callback({ hasError: true, errorCode: 999, errorMessage: '[SDK] Problem in Parsing result' }); } } else { callback({ hasError: true, errorCode: result.errorCode, errorMessage: result.errorMessage }); } }); return { uniqueId: uploadUniqueId, threadId: uploadThreadId, participant: app.store.user.get(), content: { caption: params.content, file: { uniqueId: uploadUniqueId, fileName: fileName, fileSize: fileSize, fileObject: params.file } } }; } function uploadFileToPodspaceUserGroupNew (params, callback) { var fileName, fileType, fileSize, fileExtension, uploadUniqueId, uploadThreadId; if (Utility.isNode()) { fileName = params.file.split('/') .pop(); fileType = Mime.getType(params.file); fileSize = app.fs.statSync(params.file).size; fileExtension = params.file.split('.') .pop(); } else { fileName = params.file.name; fileType = params.file.type; fileSize = params.file.size; fileExtension = params.file.name.split('.') .pop(); } // fileName = params.file.name; //fileType = params.file.type; // fileSize = params.file.size; //fileExtension = params.file.name.split('.').pop(); var uploadFileData = {}; if (params) { if (typeof params.file !== 'undefined') { uploadFileData.file = params.file; } if (parseInt(params.threadId) > 0) { uploadThreadId = params.threadId; uploadFileData.threadId = params.threadId; } else { uploadThreadId = 0; uploadFileData.threadId = 0; } if (typeof params.uniqueId == 'string') { uploadUniqueId = params.uniqueId; uploadFileData.uniqueId = params.uniqueId; } else { uploadUniqueId = Utility.generateUUID(); uploadFileData.uniqueId = uploadUniqueId; } if (typeof params.userGroupHash == 'string') { uploadFileData.userGroupHash = params.userGroupHash; } else { callback({ hasError: true, errorCode: 999, errorMessage: '[SDK] You need to enter a userGroupHash to be able to upload on PodSpace!' }); return; } if (typeof params.originalFileName == 'string') { uploadFileData.originalFileName = params.originalFileName; } else { uploadFileData.originalFileName = fileName; } } app.httpRequest.httpRequest({ url: app.sdkParams.SERVICE_ADDRESSES.PODSPACE_FILESERVER_ADDRESS + SERVICES_PATH.PODSPACE_UPLOAD_FILE_TO_USERGROUP_NEW.replace('{userGroupHash}', uploadFileData.userGroupHash), method: 'POST', headers: { 'Authorization': 'Bearer ' + app.sdkParams.token, ...params.headers }, data: uploadFileData, uniqueId: uploadUniqueId }, function (result) { if (!result.hasError) { try { var response = (typeof result.result.responseText == 'string') ? JSON.parse(result.result.responseText) : result.result.responseText; callback({ hasError: response.hasError, result: response.result }); } catch (e) { callback({ hasError: true, errorCode: 999, errorMessage: '[SDK] Problem in Parsing result' }); } } else { callback({ hasError: true, errorCode: result.errorCode, errorMessage: result.errorMessage }); } }); return { uniqueId: uploadUniqueId, threadId: uploadThreadId, participant: app.store.user.get(), content: { caption: params.content, file: { uniqueId: uploadUniqueId, fileName: fileName, fileSize: fileSize, fileObject: params.file } } }; } function uploadImageToPodspaceUserGroupNew(params, callback) { var fileName, fileType, fileSize, fileWidth = 0, fileHeight = 0, fileExtension, uploadUniqueId, uploadThreadId; var continueImageUpload = function (params) { if (imageMimeTypes.indexOf(fileType) >= 0 || imageExtentions.indexOf(fileExtension) >= 0) { var uploadImageData = {}; if (params) { if (typeof params.image !== 'undefined') { uploadImageData.file = params.image; } else { callback({ hasError: true, errorCode: 999, errorMessage: '[SDK] You need to send a image file!' }); return; } if (typeof params.userGroupHash == 'string') { uploadImageData.userGroupHash = params.userGroupHash; } else { callback({ hasError: true, errorCode: 999, errorMessage: '[SDK] You need to enter a userGroupHash to be able to upload on PodSpace!' }); return; } if (params.randomFileName) { uploadImageData.fileName = Utility.generateUUID() + '.' + fileExtension; } else { uploadImageData.filename = fileName; } uploadImageData.fileSize = fileSize; if (parseInt(params.threadId) > 0) { uploadThreadId = params.threadId; uploadImageData.threadId = params.threadId; } else { uploadThreadId = 0; uploadImageData.threadId = 0; } if (typeof params.uniqueId == 'string') { uploadUniqueId = params.uniqueId; uploadImageData.uniqueId = params.uniqueId; } else { uploadUniqueId = Utility.generateUUID(); uploadImageData.uniqueId = uploadUniqueId; } if (typeof params.originalFileName == 'string') { uploadImageData.originalFileName = params.originalFileName; } else { uploadImageData.originalFileName = fileName; } uploadImageData.x = parseInt(params.xC) || 0; uploadImageData.y = parseInt(params.yC) || 0; uploadImageData.height = parseInt(params.hC) || fileHeight; uploadImageData.weight = parseInt(params.wC) || fileWidth; } app.httpRequest.httpRequest({ url: app.sdkParams.SERVICE_ADDRESSES.PODSPACE_FILESERVER_ADDRESS + SERVICES_PATH.PODSPACE_UPLOAD_IMAGE_TO_USERGROUP_NEW.replace('{userGroupHash}', uploadImageData.userGroupHash), method: 'POST', headers: { 'Authorization': 'Bearer ' + app.sdkParams.token, ...params.headers }, data: uploadImageData, uniqueId: uploadUniqueId }, function (result) { if (!result.hasError) { try { var response = (typeof result.result.responseText == 'string') ? JSON.parse(result.result.responseText) : result.result.responseText; if (response.status < 400) { response.result.actualHeight = fileHeight; response.result.actualWidth = fileWidth; callback({ hasError: response.hasError, result: response.result }); } else { callback({ hasError: true, errorCode: response.errorCode, errorMessage: response.message }); } } catch (e) { app.sdkParams.consoleLogging && console.log(e) callback({ hasError: true, errorCode: 6300, errorMessage: CHAT_ERRORS[6300] }); } } else { callback({ hasError: true, errorCode: result.errorCode, errorMessage: result.errorMessage }); } }); return { uniqueId: uploadUniqueId, threadId: uploadThreadId, participant: app.store.user.get(), content: { caption: params.content, file: { uniqueId: uploadUniqueId, fileName: fileName, fileSize: fileSize, fileObject: params.file } } }; } else { callback({ hasError: true, errorCode: 6301, errorMessage: CHAT_ERRORS[6301] }); } } if (Utility.isNode()) { fileName = params.image.split('/') .pop(); fileType = Mime.getType(params.image); fileSize = app.fs.statSync(params.image).size; fileExtension = params.image.split('.') .pop(); var dimensions = SizeOf(params.image); fileWidth = dimensions.width; fileHeight = dimensions.height; continueImageUpload(params); } else { fileName = params.image.name; fileType = params.image.type; fileSize = params.image.size; fileExtension = params.image.name.split('.') .pop(); var reader = new FileReader(); reader.onload = function (e) { var image = new Image(); image.onload = function () { fileWidth = this.width; fileHeight = this.height; continueImageUpload(params); }; image.src = e.target.result; }; reader.readAsDataURL(params.image); } } /** * Upload Image To Pod Space * * Upload images to Pod Space Image Server * * @since 3.9.9 * @access private * * @param {string} fileName A name for the file * @param {file} image FILE: the image file (if its an image file) * @param {float} xC Crop Start point x (if its an image file) * @param {float} yC Crop Start point Y (if its an image file) * @param {float} hC Crop size Height (if its an image file) * @param {float} wC Crop size Weight (if its an image file) * @param {string} userGroupHash Unique identifier of threads on podspace * @param {string} token User Token * @param {string} _token_issuer_ Token Issuer * * @link https://podspace.pod.ir/apidocs/?srv=/userGroup/uploadImage/ * * @return {object} Uploaded Image Object */ function uploadImageToPodspaceUserGroup(params, callback) { var fileName, fileType, fileSize, fileWidth = 0, fileHeight = 0, fileExtension, uploadUniqueId, uploadThreadId; var continueImageUpload = function (params) { let uploadImageData, userGroupHash; if (imageMimeTypes.indexOf(fileType) >= 0 || imageExtentions.indexOf(fileExtension) >= 0) { uploadImageData = {}; if (params) { if (typeof params.image !== 'undefined') { uploadImageData.file = params.image; } else { callback({ hasError: true, errorCode: 999, errorMessage: '[SDK] You need to send a image file!' }); return; } if (typeof params.userGroupHash == 'string') { userGroupHash = params.userGroupHash; uploadImageData.userGroupHash = params.userGroupHash; } else { callback({ hasError: true, errorCode: 999, errorMessage: '[SDK] You need to enter a userGroupHash to be able to upload on PodSpace!' }); return; } if (params.randomFileName) { uploadImageData.fileName = Utility.generateUUID() + '.' + fileExtension; } else { uploadImageData.filename = fileName; } uploadImageData.fileSize = fileSize; if (parseInt(params.threadId) > 0) { uploadThreadId = params.threadId; uploadImageData.threadId = params.threadId; } else { uploadThreadId = 0; uploadImageData.threadId = 0; } if (typeof params.uniqueId == 'string') { uploadUniqueId = params.uniqueId; uploadImageData.uniqueId = params.uniqueId; } else { uploadUniqueId = Utility.generateUUID(); uploadImageData.uniqueId = uploadUniqueId; } if (typeof params.originalFileName == 'string') { uploadImageData.originalFileName = params.originalFileName; } else { uploadImageData.originalFileName = fileName; } uploadImageData.xC = parseInt(params.xC) || 0; uploadImageData.yC = parseInt(params.yC) || 0; uploadImageData.hC = parseInt(params.hC) || fileHeight; uploadImageData.wC = parseInt(params.wC) || fileWidth; } app.httpRequest.httpRequest({ url: app.sdkParams.SERVICE_ADDRESSES.PODSPACE_FILESERVER_ADDRESS + SERVICES_PATH.PODSPACE_UPLOAD_IMAGE_TO_USERGROUP, method: 'POST', headers: { '_token_': app.sdkParams.token, '_token_issuer_': 1 }, data: uploadImageData, uniqueId: uploadUniqueId }, function (result) { if (!result.hasError) { try { var response = (typeof result.result.responseText == 'string') ? JSON.parse(result.result.responseText) : result.result.responseText; if (typeof response.hasError !== 'undefined' && !response.hasError) { response.result.actualHeight = fileHeight; response.result.actualWidth = fileWidth; callback({ hasError: response.hasError, result: response.result }); } else { callback({ hasError: true, errorCode: response.errorCode, errorMessage: response.message }); } } catch (e) { console.log(e) callback({ hasError: true, errorCode: 6300, errorMessage: CHAT_ERRORS[6300] }); } } else { callback({ hasError: true, errorCode: result.errorCode, errorMessage: result.errorMessage }); } }); return { uniqueId: uploadUniqueId, threadId: uploadThreadId, participant: app.store.user.get(), content: { caption: params.content, file: { uniqueId: uploadUniqueId, fileName: fileName, fileSize: fileSize, fileObject: params.file } } }; } else { callback({ hasError: true, errorCode: 6301, errorMessage: CHAT_ERRORS[6301] }); } } if (Utility.isNode()) { fileName = params.image.split('/') .pop(); fileType = Mime.getType(params.image); fileSize = app.fs.statSync(params.image).size; fileExtension = params.image.split('.') .pop(); var dimensions = SizeOf(params.image); fileWidth = dimensions.width; fileHeight = dimensions.height; continueImageUpload(params); } else { fileName = params.image.name; fileType = params.image.type; fileSize = params.image.size; fileExtension = params.image.name.split('.') .pop(); var reader = new FileReader(); reader.onload = function (e) { var image = new Image(); image.onload = function () { fileWidth = this.width; fileHeight = this.height; continueImageUpload(params); }; image.src = e.target.result; }; reader.readAsDataURL(params.image); } } /** * Upload Image To Pod Space Publically * * Upload images to Pod Space Image Server * * @since 3.9.9 * @access private * * @param {string} fileName A name for the file * @param {file} image FILE: the image file (if its an image file) * @param {float} xC Crop Start point x (if its an image file) * @param {float} yC Crop Start point Y (if its an image file) * @param {float} hC Crop size Height (if its an image file) * @param {float} wC Crop size Weight (if its an image file) * @param {string} token User Token * @param {string} _token_issuer_ Token Issuer * * @link https://podspace.pod.ir/apidocs/?srv=/nzh/drive/uploadImage * * @return {object} Uploaded Image Object */ function uploadImageToPodspace (params, callback) { var fileName, fileType, fileSize, fileWidth = 0, fileHeight = 0, fileExtension, uploadUniqueId, uploadThreadId; if (Utility.isNode()) { fileName = params.image.split('/') .pop(); fileType = Mime.getType(params.image); fileSize = app.fs.statSync(params.image).size; fileExtension = params.image.split('.') .pop(); } else { fileName = params.image.name; fileType = params.image.type; fileSize = params.image.size; fileExtension = params.image.name.split('.') .pop(); var reader = new FileReader(); reader.onload = function (e) { var image = new Image(); image.onload = function () { fileWidth = this.width; fileHeight = this.height; continueImageUpload(params); }; image.src = e.target.result; }; reader.readAsDataURL(params.image); } let continueImageUpload = function (params) { if (imageMimeTypes.indexOf(fileType) >= 0 || imageExtentions.indexOf(fileExtension) >= 0) { let uploadImageData = {}; if (params) { if (typeof params.image !== 'undefined') { uploadImageData.file = params.image; } else { callback({ hasError: true, errorCode: 999, errorMessage: '[SDK] You need to send a image file!' }); return; } if (params.randomFileName) { uploadImageData.fileName = Utility.generateUUID() + '.' + fileExtension; } else { uploadImageData.filename = fileName; } uploadImageData.fileSize = fileSize; if (parseInt(params.threadId) > 0) { uploadThreadId = params.threadId; uploadImageData.threadId = params.threadId; } else { uploadThreadId = 0; uploadImageData.threadId = 0; } if (typeof params.uniqueId == 'string') { uploadUniqueId = params.uniqueId; uploadImageData.uniqueId = params.uniqueId; } else { uploadUniqueId = Utility.generateUUID(); uploadImageData.uniqueId = uploadUniqueId; } if (typeof params.originalFileName == 'string') { uploadImageData.originalFileName = params.originalFileName; } else { uploadImageData.originalFileName = fileName; } uploadImageData.xC = parseInt(params.xC) || 0; uploadImageData.yC = parseInt(params.yC) || 0; uploadImageData.hC = parseInt(params.hC) || fileHeight; uploadImageData.wC = parseInt(params.wC) || fileWidth; } app.httpRequest.httpRequest({ url: app.sdkParams.SERVICE_ADDRESSES.PODSPACE_FILESERVER_ADDRESS + SERVICES_PATH.PODSPACE_UPLOAD_IMAGE, method: 'POST', headers: { '_token_': app.sdkParams.token, '_token_issuer_': 1 }, data: uploadImageData, uniqueId: uploadUniqueId }, function (result) { if (!result.hasError) { try { var response = (typeof result.result.responseText == 'string') ? JSON.parse(result.result.responseText) : result.result.responseText; if (typeof response.hasError !== 'undefined' && !response.hasError) { callback({ hasError: response.hasError, result: response.result }); } else { callback({ hasError: true, errorCode: response.errorCode, errorMessage: response.message }); } } catch (e) { console.log(e) callback({ hasError: true, errorCode: 6300, errorMessage: CHAT_ERRORS[6300] }); } } else { callback({ hasError: true, errorCode: result.errorCode, errorMessage: result.errorMessage }); } }); return { uniqueId: uploadUniqueId, threadId: uploadThreadId, participant: app.store.user.get(), content: { caption: params.content, file: { uniqueId: uploadUniqueId, fileName: fileName, fileSize: fileSize, fileObject: params.file } } }; } else { callback({ hasError: true, errorCode: 6301, errorMessage: CHAT_ERRORS[6301] }); } } } return { cancelFileDownload, cancelFileUpload, getImageFromPodspaceV2, getFileFromPodspaceNew, getImageDownloadLinkFromPodspace, uploadFileToPodspace, uploadFileToPodspaceUserGroupNew, uploadImageToPodspaceUserGroupNew, uploadImageToPodspaceUserGroup, uploadImageToPodspace }; } export default FileMethods;