diff --git a/javascript/package.json b/javascript/package.json index 1cc608b267fb1be5d7df4e7551dca5cb29716d6b..bab32fc9af6cad2dda7cab5aa4307bebd8a0a301 100644 --- a/javascript/package.json +++ b/javascript/package.json @@ -28,6 +28,7 @@ "data-uri-to-blob": "^0.0.4", "libmime": "^4.0.1", "libqp": "^1.1.0", + "lodash": "^4.17.11", "penpal": "^3.0.3", "pkijs": "^2.1.69", "pvutils": "^1.0.16", diff --git a/javascript/src/constants/statuses.js b/javascript/src/constants/statuses.js new file mode 100644 index 0000000000000000000000000000000000000000..64fe340b5b9cbac714070c61ae1a3bceba23af3e --- /dev/null +++ b/javascript/src/constants/statuses.js @@ -0,0 +1 @@ +export const STATUS_DEVICE_REVOKED = "Device revoked"; diff --git a/javascript/src/iframe/viamapi-iframe.js b/javascript/src/iframe/viamapi-iframe.js index de04abf626655b9c0e45880c5e6045eedc090a8e..eee7100927f43fbef23db2c8f733d0ea5d79fcef 100644 --- a/javascript/src/iframe/viamapi-iframe.js +++ b/javascript/src/iframe/viamapi-iframe.js @@ -18,6 +18,7 @@ import { } from '../utilities/signingUtilities'; import CryptoData from '../CryptoData'; import Identity from '../Identity'; +import {STATUS_DEVICE_REVOKED} from '../constants/statuses'; const penpalMethods = require('../../temp/penpal-methods').default; const WopiAPI = require('./wopiapi-iframe'); @@ -97,7 +98,7 @@ function setIdentityInLocalStorage(identityToStore, extendKey = true) { function getProfileData(identity) { return new Penpal.Promise(executeResultUpper => { executeRestfulFunction("private", viamApi, - viamApi.identityGetIdentityProfileData).then(executeResult => { + viamApi.identityGetIdentityProfileData, null).then(executeResult => { if(executeResult.code === "200") { var listItem = {}; @@ -193,6 +194,34 @@ function createEvent(actionId, type, payloads) { } } +const destroyAuthentication = () => { + const authenticationPublicKey = localStorage.getItem("authenticatedIdentity"); + + window.viamApi.setIdentity(""); + window.viamApi.setSessionData("", ""); + + clearPinCodeTtl(authenticationPublicKey); + + localStorage.removeItem("uuid"); + localStorage.removeItem("token"); + localStorage.removeItem("authenticatedIdentity"); + + window.currentlyAuthenticatedIdentity = null; + window.lastTimeGetProfile = 0; +}; + +const destroyIdentity = () => { + destroyAuthentication(); + + if (window.currentlyLoadedIdentity) { + const { publicKey } = window.currentlyLoadedIdentity.authentication; + + delete window.loadedIdentities[publicKey]; + window.currentlyLoadedIdentity = null; + destroyIdentityFromLocalStorage(publicKey); + } +}; + window.loadedIdentities = {}; window.wopiAPI = new WopiAPI(); window.collaboraApi = new CollaboraAPI(); @@ -202,6 +231,8 @@ window.currentlyAuthenticatedIdentity = null; window.currentlyLoadedIdentity = null; window.lastTimeGetProfile = 0; +let iframeParent = null; + const handleIdentityLogin = (identity, uuid, token) => { const { loadedIdentities, viamApi } = window; const { publicKey } = identity.authentication; @@ -215,14 +246,24 @@ const handleIdentityLogin = (identity, uuid, token) => { setKeyForUUID(uuid, publicKey); }; -async function executeRestfulFunction(type, that, fn, ...args) { +async function executeRestfulFunction(type, that, fn, config, ...args) { const { currentlyAuthenticatedIdentity, viamApi, currentlyLoadedIdentity } = window; - const response = await fn.apply(that, args); + const response = await fn.apply(that, [config, ...args]); const identity = currentlyAuthenticatedIdentity || currentlyLoadedIdentity; - const badSession = type === "private" && identity && response.data.code === "400" && - response.data.status === "Bad session"; + const { code, status } = response.data; + + const deviceRevoked = type === "private" && code === "401" && status === STATUS_DEVICE_REVOKED; + if (deviceRevoked) { + destroyIdentity(); + + const event = createEvent("", "DeviceRevoked"); + iframeParent.onEvent(event); + + return response.data; + } + const badSession = type === "private" && identity && code === "400" && status === "Bad session"; if (!badSession) return response.data; const loginResponse = await viamApi.identityLogin("previousaddeddevice"); @@ -231,7 +272,7 @@ async function executeRestfulFunction(type, that, fn, ...args) { const uuid = loginResponse.data.data["Uuid"]; const token = loginResponse.data.data["Session"]; handleIdentityLogin(identity, uuid, token); - const { data } = await fn.apply(that, args); + const { data } = await fn.apply(that, [config, ...args]); return data; } @@ -336,7 +377,7 @@ function getCertificateForPassport(passportUUID, internal) { var certificate = keys["certificatePEM"]; //download("passportCertificateBeforeSigning.crt", "text/plain", certificate) //cryptoData.setx509Certificate(keys["certificate"]) - executeRestfulFunction("private", viamApi, viamApi.signSignCertificate, btoa(certificate), passportUUID).then(executeResult => { + executeRestfulFunction("private", viamApi, viamApi.signSignCertificate, null, btoa(certificate), passportUUID).then(executeResult => { if(executeResult.code === "200") { var signedCertificate = atob(executeResult.data["SignedCertificate"]); //download("passportCertificateAfterSigning.crt", "text/plain", signedCertificate) @@ -423,6 +464,7 @@ const connection = Penpal.connectToParent({ window.WOPI_URL = wopiUrl.charAt(wopiUrl.length - 1) === "/" ? wopiUrl : wopiUrl + "/"; window.COLLABORA_URL = collaboraUrl.charAt(collaboraUrl.length - 1) === "/" ? collaboraUrl : collaboraUrl + "/"; }, + ...penpalMethods, createIdentity(pinCode) { return new Penpal.Promise(result => { createPassportCertificate(makeid()).then(function(keys){ @@ -495,7 +537,7 @@ const connection = Penpal.connectToParent({ return new Penpal.Promise(result => { viamApi.setIdentity(identity.authentication.publicKey); - executeRestfulFunction("public", viamApi, viamApi.identityConfirmIdentificator,confirmationCodeArg).then(executeResult => { + executeRestfulFunction("public", viamApi, viamApi.identityConfirmIdentificator, null, confirmationCodeArg).then(executeResult => { result(executeResult); }); }); @@ -504,7 +546,7 @@ const connection = Penpal.connectToParent({ return new Penpal.Promise(result => { viamApi.setIdentity(identity.authentication.publicKey); - executeRestfulFunction("public", viamApi, viamApi.identityGetIdentificatorByRegisterToken,tokenArg).then(executeResult => { + executeRestfulFunction("public", viamApi, viamApi.identityGetIdentificatorByRegisterToken, null, tokenArg).then(executeResult => { result(executeResult); }); }); @@ -513,7 +555,7 @@ const connection = Penpal.connectToParent({ return new Penpal.Promise(result => { viamApi.setIdentity(identity.authentication.publicKey); - executeRestfulFunction("public", viamApi, viamApi.identitySubmitIdentificator,identificatorArg, registerToken).then(executeResult => { + executeRestfulFunction("public", viamApi, viamApi.identitySubmitIdentificator, null, identificatorArg, registerToken).then(executeResult => { result(executeResult); }); }); @@ -522,7 +564,7 @@ const connection = Penpal.connectToParent({ return new Penpal.Promise(result => { viamApi.setIdentity(identity.authentication.publicKey); - executeRestfulFunction("public", viamApi, viamApi.identitySubmitRegisterClaims,givennameArg,familynameArg,emailArg,phonenumberArg).then(executeResult => { + executeRestfulFunction("public", viamApi, viamApi.identitySubmitRegisterClaims, null, givennameArg,familynameArg,emailArg,phonenumberArg).then(executeResult => { result(executeResult); }); }); @@ -531,7 +573,7 @@ const connection = Penpal.connectToParent({ return new Penpal.Promise(result => { viamApi.setIdentity(registerIdentity.authentication.publicKey); - executeRestfulFunction("public", viamApi, viamApi.identityAgreeOnRegistration).then(executeResult => { + executeRestfulFunction("public", viamApi, viamApi.identityAgreeOnRegistration, null).then(executeResult => { let sequence = Promise.resolve(); if (executeResult.code === "200") { sequence = sequence.then(() => { @@ -555,7 +597,7 @@ const connection = Penpal.connectToParent({ return new Penpal.Promise(result => { viamApi.setIdentity(identity.authentication.publicKey); - executeRestfulFunction("public", viamApi, viamApi.identityResendConfirmationCode,identificatorArg).then(executeResult => { + executeRestfulFunction("public", viamApi, viamApi.identityResendConfirmationCode, null, identificatorArg).then(executeResult => { result(executeResult); }); }); @@ -578,6 +620,7 @@ const connection = Penpal.connectToParent({ "public", window.viamApi, window.viamApi.identityLogin, + null, mode, requestCode, requestActionID ); @@ -601,6 +644,19 @@ const connection = Penpal.connectToParent({ return responseToClient; }, + identityPullAvatarFromGravatar: async () => { + const authenticationPublicKey = localStorage.getItem("authenticatedIdentity"); + + if ( + !authenticationPublicKey || + !window.loadedIdentities[authenticationPublicKey] || + !extendPinCodeTtl(authenticationPublicKey) + ) { + return encodeResponse("400", "", "Identity not authenticated"); + } + + return await executeRestfulFunction("private", viamApi, viamApi.identityPullAvatarFromGravatar); + }, identityAddNewDevice() { return new Penpal.Promise(result => { const authenticationPublicKey = localStorage.getItem("authenticatedIdentity"); @@ -628,7 +684,7 @@ const connection = Penpal.connectToParent({ }) } - executeRestfulFunction("private", viamApi, viamApi.identityAddNewDevice).then(executeResult => { + executeRestfulFunction("private", viamApi, viamApi.identityAddNewDevice, null).then(executeResult => { if (executeResult.code === "200") { var actionID = executeResult.data["ActionID"]; var QrCode = executeResult.data["QrCode"]; @@ -667,7 +723,7 @@ const connection = Penpal.connectToParent({ }) } - executeRestfulFunction("private", viamApi, viamApi.identityDestroyKeysForDevice, btoa(authenticationPublicKeyArg)).then(executeResult => { + executeRestfulFunction("private", viamApi, viamApi.identityDestroyKeysForDevice, null, btoa(authenticationPublicKeyArg)).then(executeResult => { result(executeResult); }); }); @@ -685,20 +741,11 @@ const connection = Penpal.connectToParent({ const identityLogoutResponse = await executeRestfulFunction( "private", window.viamApi, - window.viamApi.identityLogout + window.viamApi.identityLogout, + null ); - window.viamApi.setIdentity(""); - window.viamApi.setSessionData("", ""); - clearPinCodeTtl(authenticationPublicKey); - - localStorage.removeItem("uuid"); - localStorage.removeItem("token"); - localStorage.removeItem("authenticatedIdentity"); - delete window.loadedIdentities[authenticationPublicKey]; - window.currentlyLoadedIdentity = null; - window.currentlyAuthenticatedIdentity = null; - window.lastTimeGetProfile = 0; + destroyAuthentication(); return identityLogoutResponse; }, @@ -706,7 +753,7 @@ const connection = Penpal.connectToParent({ return new Penpal.Promise(result => { viamApi.setIdentity(restoreAccessIdentity.authentication.publicKey); - executeRestfulFunction("public", viamApi, viamApi.identityRestoreAccess, identificator).then(executeResult => { + executeRestfulFunction("public", viamApi, viamApi.identityRestoreAccess, null, identificator).then(executeResult => { result(executeResult); }); }); @@ -871,7 +918,7 @@ const connection = Penpal.connectToParent({ passportChain.push(passportCertificate); response = await executeRestfulFunction( - "private", window.viamApi, window.viamApi.passportGetEmailWithHeaderByPassport, passportUUID, emailMessage); + "private", window.viamApi, window.viamApi.passportGetEmailWithHeaderByPassport, null, passportUUID, emailMessage); if (response.code !== "200") { return encodeResponse("400", "", response.status); @@ -880,7 +927,7 @@ const connection = Penpal.connectToParent({ const signedEmail = await signEmail(response.data, certificateOneTime, passportChain, privateKeyOneTime); response = await executeRestfulFunction( - "private", window.viamApi, window.viamApi.signResignEmail, passportUUID, signedEmail); + "private", window.viamApi, window.viamApi.signResignEmail, null, passportUUID, signedEmail); if (response.code !== "200") { return encodeResponse("400", "", response.status); @@ -888,6 +935,51 @@ const connection = Penpal.connectToParent({ return encodeResponse("200", response.data, "Email signed"); }, + documentCreateDocument: async (path, passportUUID, contenttype) => { + const authenticationPublicKey = localStorage.getItem("authenticatedIdentity"); + if ( + !authenticationPublicKey || + !window.loadedIdentities[authenticationPublicKey] || + !extendPinCodeTtl(authenticationPublicKey) + ) { + return encodeResponse("400", "", "Identity not authenticated"); + } + + const config = { + headers: { + path, + passportuuid: passportUUID, + contenttype + } + }; + const response = await executeRestfulFunction("private", window.viamApi, window.viamApi.documentCreateDocument, + config); + + return encodeResponse("200", response.data, "Document created"); + }, + documentPutDocument: async (passportUUID, resourceid, file) => { + const authenticationPublicKey = localStorage.getItem("authenticatedIdentity"); + if ( + !authenticationPublicKey || + !window.loadedIdentities[authenticationPublicKey] || + !extendPinCodeTtl(authenticationPublicKey) + ) { + return encodeResponse("400", "", "Identity not authenticated"); + } + + const config = { + headers: { + 'Content-Type': 'multipart/form-data', + passportuuid: passportUUID, + resourceid + } + }; + + const response = await executeRestfulFunction( + "private", window.viamApi, window.viamApi.documentPutDocument, config, file); + + return encodeResponse("200", response.data, "Document created"); + }, hasSession() { return new Penpal.Promise(result => { const authenticationPublicKey = localStorage.getItem("authenticatedIdentity"); @@ -913,7 +1005,7 @@ const connection = Penpal.connectToParent({ }) } - executeRestfulFunction("private", viamApi, viamApi.identityHasSession).then(executeResult => { + executeRestfulFunction("private", viamApi, viamApi.identityHasSession, null).then(executeResult => { result(executeResult); }); }); @@ -922,7 +1014,7 @@ const connection = Penpal.connectToParent({ return new Penpal.Promise(result => { viamApi.setIdentity("marketingapppublickey"); - executeRestfulFunction("public", viamApi, viamApi.marketingSignUpIdentificator, identificator, reference).then(executeResult => { + executeRestfulFunction("public", viamApi, viamApi.marketingSignUpIdentificator, null, identificator, reference).then(executeResult => { viamApi.setIdentity(""); viamApi.setSessionData("", ""); result(executeResult); @@ -933,7 +1025,7 @@ const connection = Penpal.connectToParent({ return new Penpal.Promise(result => { viamApi.setIdentity("marketingapppublickey"); - executeRestfulFunction("public", viamApi, viamApi.marketingGetIdentificatorProfile, identificator, pincode).then(executeResult => { + executeRestfulFunction("public", viamApi, viamApi.marketingGetIdentificatorProfile, null, identificator, pincode).then(executeResult => { viamApi.setIdentity(""); viamApi.setSessionData("", ""); result(executeResult); @@ -944,7 +1036,7 @@ const connection = Penpal.connectToParent({ return new Penpal.Promise(result => { viamApi.setIdentity("marketingapppublickey"); - executeRestfulFunction("public", viamApi, viamApi.marketingExecuteEventForIdentificator, identificator, pincode, event).then(executeResult => { + executeRestfulFunction("public", viamApi, viamApi.marketingExecuteEventForIdentificator, null, identificator, pincode, event).then(executeResult => { viamApi.setIdentity(""); viamApi.setSessionData("", ""); result(executeResult); @@ -1025,14 +1117,48 @@ const connection = Penpal.connectToParent({ result(res) }) }, + + // Collabora APIs collaboraDiscovery() { return collaboraApi.discovery().then(apps => apps); }, - ...penpalMethods + + // WOPI + getPassports: async fileId => { + const authenticationPublicKey = localStorage.getItem("authenticatedIdentity"); + + if ( + !authenticationPublicKey || + !window.loadedIdentities[authenticationPublicKey] || + !extendPinCodeTtl(authenticationPublicKey) + ) { + return encodeResponse("400", "", "Identity not authenticated"); + } + + const response = await wopiAPI.getPassports(fileId); + return response.data; + }, + + wopiPutFile: async (path, accessToken, file) => { + const authenticationPublicKey = localStorage.getItem("authenticatedIdentity"); + + if ( + !authenticationPublicKey || + !window.loadedIdentities[authenticationPublicKey] || + !extendPinCodeTtl(authenticationPublicKey) + ) { + return encodeResponse("400", "", "Identity not authenticated"); + } + + const response = await wopiAPI.putDocument(path, accessToken, file); + return response.data; + } } }); connection.promise.then(parent => { + iframeParent = parent; + if (!navigator.cookieEnabled) { console.warn("Cookie disabled. Can't start library."); return; @@ -1166,7 +1292,7 @@ connection.promise.then(parent => { if (window.currentlyLoadedIdentity && !anynomousDeviceKeyEventsProcessing && !window.currentlyAuthenticatedIdentity) { anynomousDeviceKeyEventsProcessing = true; try { - const executeResult = await executeRestfulFunction("public", viamAnonymousApi, viamAnonymousApi.eventGetNewEventsWithoutSession, "devicekey"); + const executeResult = await executeRestfulFunction("public", viamAnonymousApi, viamAnonymousApi.eventGetNewEventsWithoutSession, null, "devicekey"); if(executeResult.code === "200") { const eventsLen = executeResult.data.length; let changedMaxDeviceKeyAnonymousEventTime = false; @@ -1223,7 +1349,7 @@ connection.promise.then(parent => { if(changedMaxDeviceKeyAnonymousEventTime) { await executeRestfulFunction("public", viamAnonymousApi, viamAnonymousApi.eventUpdateLastViewedWithoutSession, - "devicekey", maxDeviceKeyAnonymousEventTime.toString()); + null, "devicekey", maxDeviceKeyAnonymousEventTime.toString()); } } } catch (e) { @@ -1235,7 +1361,7 @@ connection.promise.then(parent => { if (window.currentlyAuthenticatedIdentity != null && eventsDeviceEventsProcessing === false) { eventsDeviceEventsProcessing = true; try { - const executeResult = await executeRestfulFunction("private", viamApi, viamApi.eventGetNewEvents, "devicekey"); + const executeResult = await executeRestfulFunction("private", viamApi, viamApi.eventGetNewEvents, null, "devicekey"); if (executeResult.code === "200") { const eventsLen = executeResult.data.length; const changedMaxDeviceKeyEventTime = false; @@ -1257,7 +1383,7 @@ connection.promise.then(parent => { maxDeviceKeyEventTime = Math.max(maxDeviceKeyEventTime, event.stamp); } if(changedMaxDeviceKeyEventTime) { - await executeRestfulFunction("private", viamApi, viamApi.eventUpdateLastViewed, "devicekey", + await executeRestfulFunction("private", viamApi, viamApi.eventUpdateLastViewed, null, "devicekey", maxDeviceKeyEventTime.toString()); } } @@ -1270,7 +1396,7 @@ connection.promise.then(parent => { if (window.currentlyAuthenticatedIdentity != null && eventsEntityEventsProcessing === false) { eventsEntityEventsProcessing = true; try { - const executeResult = await executeRestfulFunction("private", viamApi, viamApi.eventGetNewEvents, "entity"); + const executeResult = await executeRestfulFunction("private", viamApi, viamApi.eventGetNewEvents, null, "entity"); if (executeResult.code === "200") { const eventsLen = executeResult.data.length; @@ -1296,7 +1422,7 @@ connection.promise.then(parent => { maxEntityEventTime = Math.max(maxEntityEventTime, event.stamp); } if(changedMaxEntityEventTime) { - await executeRestfulFunction("private", viamApi, viamApi.eventUpdateLastViewed, "entity", + await executeRestfulFunction("private", viamApi, viamApi.eventUpdateLastViewed, null, "entity", maxEntityEventTime.toString()); } } diff --git a/javascript/src/iframe/wopiapi-iframe.js b/javascript/src/iframe/wopiapi-iframe.js index 8d5b72aaab4722fc51f4167f93859253fa2901d1..c009f9ed020171a5bafc2a4ff4b97c60aff11f9f 100644 --- a/javascript/src/iframe/wopiapi-iframe.js +++ b/javascript/src/iframe/wopiapi-iframe.js @@ -19,4 +19,25 @@ WopiAPI.prototype.getPassports = function (fileID) { return axios(requestConfig); }; +WopiAPI.prototype.putDocument = function (path, accessToken, file) { + const { publicKey, uuid, token, deviceHash } = window.viamApi.getConfig().headers; + path = path[0] === "/" ? path : `/${path}`; + const requestConfig = { + url: `${window.WOPI_URL}files${path}/contents`, + method: 'POST', + headers: { + publicKey, + uuid, + token, + deviceHash + }, + params: { + access_token: accessToken + }, + data: file + }; + + return axios(requestConfig); +}; + module.exports = WopiAPI; diff --git a/main.go b/main.go index f688ea9944a2a2475ec20e9ca8bb7fe7334b6ff5..af0efbcb69289482212e8fffe26c674d9a2f1c2a 100644 --- a/main.go +++ b/main.go @@ -43,7 +43,6 @@ func buildPenpalMethods() string { "export default {\n" methods := generatePenpalRemoteMethods(endPoints) - methods += getWopiAPIPenpalMethods() result += methods @@ -57,6 +56,7 @@ func buildViamAPI() string { endPoints := server.GetEndPoints(prefixes) result := "const axios = require('axios');\n" + result += "const merge = require('lodash/merge');\n" var keys []string for k := range endPoints { @@ -78,7 +78,6 @@ func buildViamAPI() string { " }\n" + "}\n\n" - result += "ViamAPI.prototype.setSessionData = function(uuid, token) {\n" + " this.config.headers.uuid = uuid;\n" + " this.config.headers.token = token;\n" + @@ -103,11 +102,6 @@ func buildViamAPI() string { packageStr := splits[len(splits)-2] - /*if !packageCreated[packageStr] { - result += "ViamAPI.prototype.\"" + packageStr + "\" = {}\n\n" - packageCreated[packageStr] = true - }*/ - methodStr := splits[len(splits)-1] form := endPoints[url].Form @@ -129,7 +123,13 @@ func buildViamAPI() string { } } - result += "ViamAPI.prototype." + packageStr + strings.Title(methodStr) + " = function(" + args + ") {\n" + + lastComma := "," + + if args == "" { + lastComma = "" + } + + result += "ViamAPI.prototype." + packageStr + strings.Title(methodStr) + " = function(config" + lastComma + args + ") {\n" + " return axios.post(window.API_HOST + '" + packageStr + "/" + methodStr + "', {\n" for i := 0; i < lenFields; i++ { @@ -140,7 +140,7 @@ func buildViamAPI() string { result += "\n" } - result += " }, this.config);\n" + + result += " }, merge({}, this.config, config));\n" + "};\n\n" } else { splits := strings.Split(url, "/") @@ -154,8 +154,8 @@ func buildViamAPI() string { methodStr := splits[len(splits)-1] - result += "ViamAPI.prototype." + packageStr + strings.Title(methodStr) + " = function() {\n" + - " return axios.post(window.API_HOST + '" + packageStr + "/" + methodStr + "', {}, this.config);\n" + + result += "ViamAPI.prototype." + packageStr + strings.Title(methodStr) + " = function(config, data) {\n" + + " return axios.post(window.API_HOST + '" + packageStr + "/" + methodStr + "', data || {}, merge({}, this.config, config));\n" + "};\n\n" } } @@ -589,7 +589,7 @@ func generatePenpalRemoteMethods(endPoints map[string]*server.EndPoint) string { privateCheckSnippet := ` const authenticationPublicKey = localStorage.getItem("authenticatedIdentity"); - + if (authenticationPublicKey === null) { result({ "data" : "", @@ -597,15 +597,15 @@ func generatePenpalRemoteMethods(endPoints map[string]*server.EndPoint) string { "status" : "Identity not authenticated" }); } - + if (loadedIdentities[authenticationPublicKey] === null) { result({ "data" : "", "code" : "400", "status" : "Identity not authenticated" }); - } - + } + const success = extendPinCodeTtl(authenticationPublicKey); if(success === false) { @@ -614,7 +614,7 @@ func generatePenpalRemoteMethods(endPoints map[string]*server.EndPoint) string { "status" : "Identity not authenticated" }) } - + ` for i := 0; i < keysLen; i++ { @@ -627,7 +627,7 @@ func generatePenpalRemoteMethods(endPoints map[string]*server.EndPoint) string { if url == "/identity/getIdentityProfileData" { privateCheckSnippet = ` const authenticationPublicKey = localStorage.getItem("authenticatedIdentity"); - + if (authenticationPublicKey === null) { result({ "data" : "", @@ -635,15 +635,15 @@ func generatePenpalRemoteMethods(endPoints map[string]*server.EndPoint) string { "status" : "Identity not authenticated" }); } - + if (loadedIdentities[authenticationPublicKey] === null) { result({ "data" : "", "code" : "400", "status" : "Identity not authenticated" }); - } - + } + ` } @@ -652,11 +652,6 @@ func generatePenpalRemoteMethods(endPoints map[string]*server.EndPoint) string { packageStr := splits[len(splits)-2] - /*if !packageCreated[packageStr] { - result += "ViamAPI.prototype.\"" + packageStr + "\" = {}\n\n" - packageCreated[packageStr] = true - }*/ - methodStr := splits[len(splits)-1] form := endPoints[url].Form @@ -678,12 +673,6 @@ func generatePenpalRemoteMethods(endPoints map[string]*server.EndPoint) string { } } - /*identity_login(modeArg,codeArg,actionIDArg) { - return new Penpal.Promise(result => { - viamApi.identity_login(modeArg,codeArg,actionIDArg).then((response) => { result(response.data);}); - }); - }*/ - snippet := "" if endPoints[url].HandlerType == "private" { @@ -698,7 +687,7 @@ func generatePenpalRemoteMethods(endPoints map[string]*server.EndPoint) string { method := packageStr + strings.Title(methodStr) + ": function(" + args + ") {\n" + " return new Penpal.Promise(function(result) {\n" + snippet + - " executeRestfulFunction(\"" + endPoints[url].HandlerType + "\", viamApi, viamApi." + packageStr + strings.Title(methodStr) + lastComma + args + ").then(function(executeResult) {\n" + + " executeRestfulFunction(\"" + endPoints[url].HandlerType + "\", viamApi, viamApi." + packageStr + strings.Title(methodStr) + ", null" + lastComma + args + ").then(function(executeResult) {\n" + " result(executeResult);\n" + " });\n" + " });\n" + @@ -716,11 +705,6 @@ func generatePenpalRemoteMethods(endPoints map[string]*server.EndPoint) string { packageStr := splits[len(splits)-2] - /*if !packageCreated[packageStr] { - result += "ViamAPI.prototype.\"" + packageStr + "\" = {}\n\n" - packageCreated[packageStr] = true - }*/ - methodStr := splits[len(splits)-1] snippet := "" @@ -731,7 +715,7 @@ func generatePenpalRemoteMethods(endPoints map[string]*server.EndPoint) string { method := packageStr + strings.Title(methodStr) + ": function() {\n" + " return new Penpal.Promise(function(result) {\n" + snippet + - " executeRestfulFunction(\"" + endPoints[url].HandlerType + "\", viamApi, viamApi." + packageStr + strings.Title(methodStr) + ").then(function(executeResult) {\n" + + " executeRestfulFunction(\"" + endPoints[url].HandlerType + "\", viamApi, viamApi." + packageStr + strings.Title(methodStr) + ", null).then(function(executeResult) {\n" + " result(executeResult);\n" + " });\n" + " });\n" + @@ -750,39 +734,3 @@ func generatePenpalRemoteMethods(endPoints map[string]*server.EndPoint) string { return methods } - -func getWopiAPIPenpalMethods() string { - return `getPassports: function(fileID) { - return new Penpal.Promise(function(result) { - const authenticationPublicKey = localStorage.getItem("authenticatedIdentity"); - if (authenticationPublicKey === null) { - result({ - "data" : "", - "code" : "400", - "status" : "Identity not authenticated" - }); - } - - if (loadedIdentities[authenticationPublicKey] === null) { - result({ - "data" : "", - "code" : "400", - "status" : "Identity not authenticated" - }); - } - - const success = extendPinCodeTtl(authenticationPublicKey); - - if (success === false) { - result({"data" : "", - "code" : "400", - "status" : "Identity not authenticated" - }); - } - - wopiAPI.getPassports(fileID).then(function(response) { - result(response.data); - }); - }); - }` -}