From b8635db485350ad57e9a288cf7c546a0ddfb400a Mon Sep 17 00:00:00 2001 From: Ace Date: Thu, 21 Jul 2016 07:42:20 +0530 Subject: [PATCH 1/2] Adding changes to common modules to accomodate ui restructuring --- .../app/modules/backend-service-invoker.js | 401 +++++++++--------- .../jaggeryapps/devicemgt/app/modules/util.js | 9 +- .../public/js/invoker-lib.js | 95 ++--- 3 files changed, 250 insertions(+), 255 deletions(-) diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/modules/backend-service-invoker.js b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/modules/backend-service-invoker.js index 30c5edaff84..19e5a7c379a 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/modules/backend-service-invoker.js +++ b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/modules/backend-service-invoker.js @@ -1,43 +1,47 @@ /* - * Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. + * Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. * * WSO2 Inc. licenses this file to you under the Apache License, * Version 2.0 (the "License"); you may not use this file except * in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ /** - * This backendServiceInvoker contains the wrappers for back end jaggary calls. + * This backendServiceInvoker contains the wrappers for back end jaggery calls. */ var backendServiceInvoker = function () { var log = new Log("/app/modules/backend-service-invoker.js"); + var publicXMLHTTPInvokers = {}; + var publicHTTPClientInvokers = {}; + var privateMethods = {}; var publicWSInvokers = {}; - var publicHTTPClientInvokers = {}; - var IS_OAUTH_ENABLED = true; + var TOKEN_EXPIRED = "Access token expired"; var TOKEN_INVALID = "Invalid input. Access token validation failed"; + + var devicemgtProps = require("/app/conf/devicemgt-props.js").config(); var constants = require("/app/modules/constants.js"); - var tokenUtil = require("/app/modules/api-wrapper-util.js").apiWrapperUtil; - var devicemgtProps = require('/app/conf/devicemgt-props.js').config(); + var userModule = require("/app/modules/user.js")["userModule"]; + var tokenUtil = require("/app/modules/api-wrapper-util.js")["apiWrapperUtil"]; /** - * This methoad reads the token pair from the session and return the access token. + * This method reads the token pair from the session and return the access token. * If the token pair s not set in the session this will send a redirect to the login page. */ privateMethods.getAccessToken = function () { - var tokenPair = session.get(constants.ACCESS_TOKEN_PAIR_IDENTIFIER); + var tokenPair = session.get(constants["ACCESS_TOKEN_PAIR_IDENTIFIER"]); if (tokenPair) { return tokenPair.accessToken; } else { @@ -46,152 +50,119 @@ var backendServiceInvoker = function () { }; /** - * This method add Oauth authentication header to outgoing XMLHTTP Requests if Oauth authentication is enabled. - * @param method HTTP request type. - * @param url target url. - * @param payload payload/data which need to be send. - * @param successCallback a function to be called if the respond if successful. - * @param errorCallback a function to be called if en error is reserved. + * --------------------------------------------------------------------------- + * Start of XML-HTTP-REQUEST based Interceptor implementations + * --------------------------------------------------------------------------- + */ + + /** + * This method add Oauth authentication header to outgoing XML-HTTP Requests if Oauth authentication is enabled. + * @param httpMethod HTTP request type. + * @param requestPayload payload/data if exists which is needed to be send. + * @param endpoint Backend REST API url. + * @param responseCallback a function to be called with response retrieved. * @param count a counter which hold the number of recursive execution */ - privateMethods.execute = function (method, url, successCallback, errorCallback, payload, count, contentType, acceptType) { + privateMethods.execute = function (httpMethod, requestPayload, endpoint, responseCallback, count) { var xmlHttpRequest = new XMLHttpRequest(); - xmlHttpRequest.open(method, url); - if(!contentType){ - contentType = constants.APPLICATION_JSON; - } - if(!acceptType){ - acceptType = constants.APPLICATION_JSON; - } - xmlHttpRequest.setRequestHeader(constants.CONTENT_TYPE_IDENTIFIER, contentType); - xmlHttpRequest.setRequestHeader(constants.ACCEPT_IDENTIFIER, acceptType); - xmlHttpRequest.setRequestHeader(constants.REFERER, String(privateMethods.getClientDomain())); - if (IS_OAUTH_ENABLED) { + + xmlHttpRequest.open(httpMethod, endpoint); + xmlHttpRequest.setRequestHeader(constants["CONTENT_TYPE_IDENTIFIER"], constants["APPLICATION_JSON"]); + xmlHttpRequest.setRequestHeader(constants["ACCEPT_IDENTIFIER"], constants["APPLICATION_JSON"]); + + if (devicemgtProps["isOAuthEnabled"]) { var accessToken = privateMethods.getAccessToken(); if (!accessToken) { - response.sendRedirect(devicemgtProps["httpsURL"] + "/devicemgt/login"); + userModule.logout(function () { + response.sendRedirect(devicemgtProps["appContext"] + "login"); + }); } else { - xmlHttpRequest.setRequestHeader(constants.AUTHORIZATION_HEADER, constants.BEARER_PREFIX + accessToken); + xmlHttpRequest. + setRequestHeader(constants["AUTHORIZATION_HEADER"], constants["BEARER_PREFIX"] + accessToken); } } - if (payload) { - xmlHttpRequest.send(payload); + + if (requestPayload) { + xmlHttpRequest.send(requestPayload); } else { xmlHttpRequest.send(); } - if ((xmlHttpRequest.status >= 200 && xmlHttpRequest.status < 300) || xmlHttpRequest.status == 302) { - if (xmlHttpRequest.responseText != null) { - return successCallback(parse(xmlHttpRequest.responseText)); - } else { - return successCallback({"status": xmlHttpRequest.status, "messageFromServer": "Operation Completed"}); - } - } else if (xmlHttpRequest.status == 401 && (xmlHttpRequest.responseText == TOKEN_EXPIRED || - xmlHttpRequest.responseText == TOKEN_INVALID ) && count < 5) { + log.debug("Service Invoker-URL: " + endpoint); + log.debug("Service Invoker-Method: " + httpMethod); + + log.info("Request : " + httpMethod + " " + endpoint); + log.info("Request payload if any : " + stringify(requestPayload)); + log.info("Response status : " + xmlHttpRequest.status); + log.info("Response payload if any : " + xmlHttpRequest.responseText); + //log.info("Response headers : " + xmlHttpRequest.getAllResponseHeaders()); + + if (xmlHttpRequest.status == 401 && (xmlHttpRequest.responseText == TOKEN_EXPIRED || + xmlHttpRequest.responseText == TOKEN_INVALID ) && count < 5) { tokenUtil.refreshToken(); - return privateMethods.execute(method, url, successCallback, errorCallback, payload, (count + 1)); - } else if (xmlHttpRequest.status == 500) { - return errorCallback(xmlHttpRequest); + return privateMethods.execute(httpMethod, requestPayload, endpoint, responseCallback, ++count); } else { - return errorCallback(xmlHttpRequest); + return responseCallback(xmlHttpRequest); } }; /** - * This method add Oauth authentication header to outgoing XMLHTTP Requests if Oauth authentication is enabled. - * @param method HTTP request type. - * @param url target url. - * @param payload payload/data which need to be send. - * @param successCallback a function to be called if the respond if successful. - * @param errorCallback a function to be called if en error is reserved. + * This method add Oauth authentication header to outgoing XML-HTTP Requests if Oauth authentication is enabled. + * @param httpMethod HTTP request type. + * @param requestPayload payload/data if exists which is needed to be send. + * @param endpoint Backend REST API url. + * @param responseCallback a function to be called with response retrieved. */ - privateMethods.initiateXMLHTTPRequest = function (method, url, successCallback, errorCallback, payload, contentType, acceptType) { - if (privateMethods.getAccessToken()) { - return privateMethods.execute(method, url, successCallback, errorCallback, payload, 0, contentType, acceptType); - } + privateMethods.initiateXMLHTTPRequest = function (httpMethod, requestPayload, endpoint, responseCallback) { + return privateMethods.execute(httpMethod, requestPayload, endpoint, responseCallback, 0); }; /** - * This method add Oauth authentication header to outgoing HTTPClient Requests if Oauth authentication is enabled. - * @param method HTTP request type. - * @param url target url. - * @param payload payload/data which need to be send. - * @param successCallback a function to be called if the respond if successful. - * @param errorCallback a function to be called if en error is reserved. + * This method invokes return initiateXMLHttpRequest for get calls + * @param endpoint Backend REST API url. + * @param responseCallback a function to be called with response retrieved. */ - privateMethods.initiateHTTPClientRequest = function (method, url, successCallback, errorCallback, payload, contentType, acceptType) { - var HttpClient = Packages.org.apache.commons.httpclient.HttpClient; - var httpMethodObject; - switch (method) { - case constants.HTTP_POST: - var PostMethod = Packages.org.apache.commons.httpclient.methods.PostMethod; - httpMethodObject = new PostMethod(url); - break; - case constants.HTTP_PUT: - var PutMethod = Packages.org.apache.commons.httpclient.methods.PutMethod; - httpMethodObject = new PutMethod(url); - break; - case constants.HTTP_GET: - var GetMethod = Packages.org.apache.commons.httpclient.methods.GetMethod; - httpMethodObject = new GetMethod(url); - break; - case constants.HTTP_DELETE: - var DeleteMethod = Packages.org.apache.commons.httpclient.methods.DeleteMethod; - httpMethodObject = new DeleteMethod(url); - break; - default: - throw new IllegalArgumentException("Invalid HTTP request type: " + method); - } - var Header = Packages.org.apache.commons.httpclient.Header; - var header = new Header(); - header.setName(constants.CONTENT_TYPE_IDENTIFIER); - header.setValue(contentType); - httpMethodObject.addRequestHeader(header); - header = new Header(); - header.setName(constants.ACCEPT_IDENTIFIER); - header.setValue(acceptType); - httpMethodObject.addRequestHeader(header); - header = new Header(); - header.setName(constants.REFERER); - header.setValue(String(privateMethods.getClientDomain())); - httpMethodObject.addRequestHeader(header); - if (IS_OAUTH_ENABLED) { - var accessToken = privateMethods.getAccessToken(); - if (accessToken) { - header = new Header(); - header.setName(constants.AUTHORIZATION_HEADER); - header.setValue(constants.BEARER_PREFIX + accessToken); - httpMethodObject.addRequestHeader(header); - } else { - response.sendRedirect(devicemgtProps["httpsURL"] + "/devicemgt/login"); - } + publicXMLHTTPInvokers.get = function (endpoint, responseCallback) { + var requestPayload = null; + return privateMethods.initiateXMLHTTPRequest(constants["HTTP_GET"], requestPayload, endpoint, responseCallback); + }; - } - if (payload) { - var stringRequestEntity = new StringRequestEntity(stringify(payload)); - httpMethodObject.setRequestEntity(stringRequestEntity); - } - var client = new HttpClient(); - try { - client.executeMethod(httpMethodObject); - var status = httpMethodObject.getStatusCode(); - if (status == 200) { - var responseContentDispositionHeader = httpMethodObject.getResponseHeader(constants.CONTENT_DISPOSITION_IDENTIFIER); - if (responseContentDispositionHeader) { - return successCallback(httpMethodObject.getResponseBodyAsStream(), httpMethodObject.getResponseHeaders()); - } else { - return successCallback(httpMethodObject.getResponseBody()); - } - } else { - return errorCallback(httpMethodObject.getResponseBody()); - } - } catch (e) { - return errorCallback(response); - } finally { - httpMethodObject.releaseConnection(); - } + /** + * This method invokes return initiateXMLHttpRequest for post calls + * @param endpoint Backend REST API url. + * @param requestPayload payload/data if exists which is needed to be send. + * @param responseCallback a function to be called with response retrieved. + */ + publicXMLHTTPInvokers.post = function (endpoint, requestPayload, responseCallback) { + return privateMethods.initiateXMLHTTPRequest(constants["HTTP_POST"], requestPayload, endpoint, responseCallback); + }; + + /** + * This method invokes return initiateXMLHttpRequest for put calls + * @param endpoint Backend REST API url. + * @param requestPayload payload/data if exists which is needed to be send. + * @param responseCallback a function to be called with response retrieved. + */ + publicXMLHTTPInvokers.put = function (endpoint, requestPayload, responseCallback) { + return privateMethods.initiateXMLHTTPRequest(constants["HTTP_PUT"], requestPayload, endpoint, responseCallback); }; + /** + * This method invokes return initiateXMLHttpRequest for delete calls + * @param endpoint Backend REST API url. + * @param responseCallback a function to be called with response retrieved. + */ + publicXMLHTTPInvokers.delete = function (endpoint, responseCallback) { + var requestPayload = null; + return privateMethods.initiateXMLHTTPRequest(constants["HTTP_DELETE"], requestPayload, endpoint, responseCallback); + }; + + /** + * --------------------------------------------------------------------------- + * Start of WS-REQUEST based Interceptor implementations + * --------------------------------------------------------------------------- + */ + /** * This method add Oauth authentication header to outgoing WS Requests if Oauth authentication is enabled. * @param action @@ -202,32 +173,26 @@ var backendServiceInvoker = function () { * @param soapVersion soapVersion which need to used. */ privateMethods.initiateWSRequest = function (action, endpoint, successCallback, errorCallback, soapVersion, payload) { - var ws = require('ws'); + var ws = require("ws"); var wsRequest = new ws.WSRequest(); var options = []; - if (IS_OAUTH_ENABLED) { + if (devicemgtProps["isOAuthEnabled"]) { var accessToken = privateMethods.getAccessToken(); if (accessToken) { - var authenticationHeaderName = String(constants.AUTHORIZATION_HEADER); - var authenticationHeaderValue = String(constants.BEARER_PREFIX + accessToken); + var authenticationHeaderName = String(constants["AUTHORIZATION_HEADER"]); + var authenticationHeaderValue = String(constants["BEARER_PREFIX"] + accessToken); var headers = []; var oAuthAuthenticationData = {}; oAuthAuthenticationData.name = authenticationHeaderName; oAuthAuthenticationData.value = authenticationHeaderValue; headers.push(oAuthAuthenticationData); - - var referrerData = {}; - referrerData.name = constants.REFERER; - referrerData.value = String(privateMethods.getClientDomain()); - headers.push(referrerData); - options.HTTPHeaders = headers; } else { - response.sendRedirect(devicemgtProps["httpsURL"] + "/devicemgt/login"); + response.sendRedirect(devicemgtProps["appContext"] + "login"); } } options.useSOAP = soapVersion; - options.useWSA = constants.WEB_SERVICE_ADDRESSING_VERSION; + options.useWSA = constants["WEB_SERVICE_ADDRESSING_VERSION"]; options.action = action; var wsResponse; try { @@ -245,68 +210,104 @@ var backendServiceInvoker = function () { }; /** - * This method invokes return initiateXMLHttpRequest for get calls - * @param url target url. + * This method invokes return initiateWSRequest for soap calls + * @param action describes particular soap action. + * @param requestPayload SOAP request payload which is needed to be send. + * @param endpoint service end point to be triggered. * @param successCallback a function to be called if the respond if successful. * @param errorCallback a function to be called if en error is reserved. + * @param soapVersion soapVersion which need to used. */ - publicXMLHTTPInvokers.get = function (url, successCallback, errorCallback, contentType, acceptType) { - return privateMethods.initiateXMLHTTPRequest(constants.HTTP_GET, url, successCallback, errorCallback, contentType, acceptType); + publicWSInvokers.soapRequest = function (action, requestPayload, endpoint, successCallback, errorCallback, soapVersion) { + return privateMethods.initiateWSRequest(action, endpoint, successCallback, errorCallback, soapVersion, requestPayload); }; /** - * This method invokes return initiateXMLHttpRequest for post calls - * @param url target url. - * @param payload payload/data which need to be send. - * @param successCallback a function to be called if the respond if successful. - * @param errorCallback a function to be called if en error is reserved. + * --------------------------------------------------------------------------- + * Start of HTTP-CLIENT-REQUEST based Interceptor implementations + * --------------------------------------------------------------------------- */ - publicXMLHTTPInvokers.post = function (url, payload, successCallback, errorCallback, contentType, acceptType) { - return privateMethods.initiateXMLHTTPRequest(constants.HTTP_POST, url, successCallback, errorCallback, payload, contentType, acceptType); - }; /** - * This method invokes return initiateXMLHttpRequest for put calls + * This method add Oauth authentication header to outgoing HTTPClient Requests if Oauth authentication is enabled. + * @param method HTTP request type. * @param url target url. * @param payload payload/data which need to be send. * @param successCallback a function to be called if the respond if successful. * @param errorCallback a function to be called if en error is reserved. */ - publicXMLHTTPInvokers.put = function (url, payload, successCallback, errorCallback, contentType, acceptType) { - return privateMethods.initiateXMLHTTPRequest(constants.HTTP_PUT, url, successCallback, errorCallback, payload, contentType, acceptType); - }; - - /** - * This method invokes return initiateXMLHttpRequest for delete calls - * @param url target url. - * @param successCallback a function to be called if the respond if successful. - * @param errorCallback a function to be called if en error is reserved. - */ - publicXMLHTTPInvokers.delete = function (url, successCallback, errorCallback, contentType, acceptType) { - return privateMethods.initiateXMLHTTPRequest(constants.HTTP_DELETE, url, successCallback, errorCallback, contentType, acceptType); - }; + privateMethods.initiateHTTPClientRequest = function (method, url, successCallback, errorCallback, payload) { + var HttpClient = Packages.org.apache.commons.httpclient.HttpClient; + var httpMethodObject; + switch (method) { + case constants["HTTP_GET"]: + var GetMethod = Packages.org.apache.commons.httpclient.methods.GetMethod; + httpMethodObject = new GetMethod(url); + break; + case constants["HTTP_POST"]: + var PostMethod = Packages.org.apache.commons.httpclient.methods.PostMethod; + httpMethodObject = new PostMethod(url); + break; + case constants["HTTP_PUT"]: + var PutMethod = Packages.org.apache.commons.httpclient.methods.PutMethod; + httpMethodObject = new PutMethod(url); + break; + case constants["HTTP_DELETE"]: + var DeleteMethod = Packages.org.apache.commons.httpclient.methods.DeleteMethod; + httpMethodObject = new DeleteMethod(url); + break; + default: + throw new IllegalArgumentException("Invalid HTTP request method: " + method); + } + var Header = Packages.org.apache.commons.httpclient.Header; + var header = new Header(); + header.setName(constants["CONTENT_TYPE_IDENTIFIER"]); + header.setValue(constants["APPLICATION_JSON"]); + httpMethodObject.addRequestHeader(header); + header = new Header(); + header.setName(constants["ACCEPT_IDENTIFIER"]); + header.setValue(constants["APPLICATION_JSON"]); + httpMethodObject.addRequestHeader(header); - /** - * This method invokes return initiateWSRequest for soap calls - * @param endpoint service end point to be triggered. - * @param payload soap payload which need to be send. - * @param successCallback a function to be called if the respond if successful. - * @param errorCallback a function to be called if en error is reserved. - * @param soapVersion soapVersion which need to used. - */ - publicWSInvokers.soapRequest = function (action, endpoint, payload, successCallback, errorCallback, soapVersion) { - return privateMethods.initiateWSRequest(action, endpoint, successCallback, errorCallback, soapVersion, payload); + if (devicemgtProps["isOAuthEnabled"]) { + var accessToken = privateMethods.getAccessToken(); + if (accessToken) { + header = new Header(); + header.setName(constants["AUTHORIZATION_HEADER"]); + header.setValue(constants["BEARER_PREFIX"] + accessToken); + httpMethodObject.addRequestHeader(header); + } else { + response.sendRedirect(devicemgtProps["appContext"] + "login"); + } + } + var stringRequestEntity = new StringRequestEntity(stringify(payload)); + httpMethodObject.setRequestEntity(stringRequestEntity); + var client = new HttpClient(); + try { + client.executeMethod(httpMethodObject); + var status = httpMethodObject.getStatusCode(); + if (status == 200) { + return successCallback(httpMethodObject.getResponseBody()); + } else { + return errorCallback(httpMethodObject.getResponseBody()); + } + } catch (e) { + return errorCallback(response); + } finally { + method.releaseConnection(); + } }; - /** * This method invokes return initiateHTTPClientRequest for get calls * @param url target url. * @param successCallback a function to be called if the respond if successful. * @param errorCallback a function to be called if en error is reserved. */ - publicHTTPClientInvokers.get = function (url, successCallback, errorCallback, contentType, acceptType) { - return privateMethods.initiateHTTPClientRequest(constants.HTTP_GET, url, successCallback, errorCallback, null, contentType, acceptType); + publicHTTPClientInvokers.get = function (url, successCallback, errorCallback) { + var requestPayload = null; + return privateMethods. + initiateHTTPClientRequest(constants["HTTP_GET"], url, successCallback, errorCallback, requestPayload); }; /** @@ -316,9 +317,9 @@ var backendServiceInvoker = function () { * @param successCallback a function to be called if the respond if successful. * @param errorCallback a function to be called if en error is reserved. */ - publicHTTPClientInvokers.post = function (url, payload, successCallback, errorCallback, contentType, acceptType) { + publicHTTPClientInvokers.post = function (url, payload, successCallback, errorCallback) { return privateMethods. - initiateHTTPClientRequest(constants.HTTP_POST, url, successCallback, errorCallback, payload, contentType, acceptType); + initiateHTTPClientRequest(constants["HTTP_POST"], url, successCallback, errorCallback, payload); }; /** @@ -328,8 +329,9 @@ var backendServiceInvoker = function () { * @param successCallback a function to be called if the respond if successful. * @param errorCallback a function to be called if en error is reserved. */ - publicHTTPClientInvokers.put = function (url, payload, successCallback, errorCallback, contentType, acceptType) { - return privateMethods.initiateHTTPClientRequest(constants.HTTP_PUT, url, successCallback, errorCallback, payload, contentType, acceptType); + publicHTTPClientInvokers.put = function (url, payload, successCallback, errorCallback) { + return privateMethods. + initiateHTTPClientRequest(constants["HTTP_PUT"], url, successCallback, errorCallback, payload); }; /** @@ -338,23 +340,16 @@ var backendServiceInvoker = function () { * @param successCallback a function to be called if the respond if successful. * @param errorCallback a function to be called if en error is reserved. */ - publicHTTPClientInvokers.delete = function (url, successCallback, errorCallback, contentType, acceptType) { - return privateMethods.initiateHTTPClientRequest(constants.HTTP_DELETE, url, successCallback, errorCallback, contentType, acceptType); + publicHTTPClientInvokers.delete = function (url, successCallback, errorCallback) { + var requestPayload = null; + return privateMethods. + initiateHTTPClientRequest(constants["HTTP_DELETE"], url, successCallback, errorCallback, requestPayload); }; - /** - * This method fetch the current logged user from the session and returns - * the tenant domain name of the user - * @returns {tenantDomain} - */ - privateMethods.getClientDomain = function () { - var user = session.get(constants.USER_SESSION_KEY); - return user.domain; - } + var publicMethods = {}; + publicMethods.XMLHttp = publicXMLHTTPInvokers; + publicMethods.WS = publicWSInvokers; + publicMethods.HttpClient = publicHTTPClientInvokers; - var publicInvokers = {}; - publicInvokers.XMLHttp = publicXMLHTTPInvokers; - publicInvokers.WS = publicWSInvokers; - publicInvokers.HttpClient = publicHTTPClientInvokers; - return publicInvokers; -}(); \ No newline at end of file + return publicMethods; +}(); diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/modules/util.js b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/modules/util.js index 1deb5c60935..3334ea66648 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/modules/util.js +++ b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/modules/util.js @@ -25,11 +25,12 @@ var util = function () { var carbon = require('carbon'); var constants = require("/app/modules/constants.js"); var adminUser = devicemgtProps["adminUser"]; + var clientName = devicemgtProps["clientName"]; module.getDyanmicCredentials = function (owner) { var payload = { "callbackUrl": devicemgtProps.callBackUrl, - "clientName": "devicemgt", + "clientName": clientName, "tokenScope": "admin", "owner": adminUser, "applicationType": "webapp", @@ -79,7 +80,7 @@ var util = function () { */ module.getTokenWithPasswordGrantType = function (username, password, encodedClientKeys, scope) { var xhr = new XMLHttpRequest(); - var tokenEndpoint = devicemgtProps.idPServer + "/token"; + var tokenEndpoint = devicemgtProps.idPServer; xhr.open("POST", tokenEndpoint, false); xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xhr.setRequestHeader("Authorization", "Basic " + encodedClientKeys); @@ -119,7 +120,7 @@ var util = function () { encodedExtractedAssertion = this.encode(extractedAssertion); var xhr = new XMLHttpRequest(); - var tokenEndpoint = devicemgtProps.idPServer + "/token"; + var tokenEndpoint = devicemgtProps.idPServer; xhr.open("POST", tokenEndpoint, false); xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xhr.setRequestHeader("Authorization", "Basic " + clientKeys); @@ -140,7 +141,7 @@ var util = function () { module.refreshToken = function (tokenPair, clientData, scope) { var xhr = new XMLHttpRequest(); - var tokenEndpoint = devicemgtProps.idPServer + "/token"; + var tokenEndpoint = devicemgtProps.idPServer; xhr.open("POST", tokenEndpoint, false); xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xhr.setRequestHeader("Authorization", "Basic " + clientData); diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.lib.service-invoker-utility/public/js/invoker-lib.js b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.lib.service-invoker-utility/public/js/invoker-lib.js index cd9d2e5d29f..30f2be1c64e 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.lib.service-invoker-utility/public/js/invoker-lib.js +++ b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.lib.service-invoker-utility/public/js/invoker-lib.js @@ -1,72 +1,71 @@ /* - * Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. + * Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. * * WSO2 Inc. licenses this file to you under the Apache License, * Version 2.0 (the "License"); you may not use this file except * in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ var invokerUtil = function () { - var module = {}; + var publicMethods = {}; + var privateMethods = {}; - var END_POINT = window.location.origin+"/devicemgt/api/invoker/execute/"; + privateMethods.execute = function (requestMethod, requestURL, requestPayload, successCallback, errorCallback) { + var restAPIRequestDetails = {}; + restAPIRequestDetails["requestMethod"] = requestMethod; + restAPIRequestDetails["requestURL"] = requestURL; + restAPIRequestDetails["requestPayload"] = JSON.stringify(requestPayload); + var appContext = devicemgtProps["appContext"]; - module.get = function (url, successCallback, errorCallback, contentType, acceptType) { - var payload = null; - execute("GET", url, payload, successCallback, errorCallback, contentType, acceptType); + var request = { + url: appContext + "api/invoker/execute/", + type: "POST", + contentType: "application/json", + data: JSON.stringify(restAPIRequestDetails), + accept: "application/json", + success: successCallback, + error: function (jqXHR) { + if (jqXHR.status == 401) { + console.log("Unauthorized access attempt!"); + $(modalPopupContent).html($("#error-msg").html()); + showPopup(); + } else { + errorCallback(jqXHR); + } + } + }; + + $.ajax(request); }; - module.post = function (url, payload, successCallback, errorCallback, contentType, acceptType) { - execute("POST", url, payload, successCallback, errorCallback, contentType, acceptType); + + publicMethods.get = function (requestURL, successCallback, errorCallback) { + var requestPayload = null; + privateMethods.execute("GET", requestURL, requestPayload, successCallback, errorCallback); }; - module.put = function (url, payload, successCallback, errorCallback, contentType, acceptType) { - execute("PUT", url, payload, successCallback, errorCallback, contentType, acceptType); + + publicMethods.post = function (requestURL, requestPayload, successCallback, errorCallback) { + privateMethods.execute("POST", requestURL, requestPayload, successCallback, errorCallback); }; - module.delete = function (url, successCallback, errorCallback, contentType, acceptType) { - var payload = null; - execute("DELETE", url, payload, successCallback, errorCallback, contentType, acceptType); + + publicMethods.put = function (requestURL, requestPayload, successCallback, errorCallback) { + privateMethods.execute("PUT", requestURL, requestPayload, successCallback, errorCallback); }; - function execute (methoad, url, payload, successCallback, errorCallback, contentType, acceptType) { - if(contentType == undefined){ - contentType = "application/json"; - } - if(acceptType == undefined){ - acceptType = "application/json"; - } - var data = { - url: END_POINT, - type: "POST", - contentType: contentType, - accept: acceptType, - success: successCallback - }; - var paramValue = {}; - paramValue.actionMethod = methoad; - paramValue.actionUrl = url; - paramValue.actionPayload = payload; - if(contentType == "application/json"){ - paramValue.actionPayload = JSON.stringify(payload); - } - data.data = JSON.stringify(paramValue); - $.ajax(data).fail(function (jqXHR) { - if (jqXHR.status == "401") { - console.log("Unauthorized access attempt!"); - $(modalPopupContent).html($('#error-msg').html()); - showPopup(); - } else { - errorCallback(jqXHR); - } - }); + + publicMethods.delete = function (requestURL, successCallback, errorCallback) { + var requestPayload = null; + privateMethods.execute("DELETE", requestURL, requestPayload, successCallback, errorCallback); }; - return module; + + return publicMethods; }(); From 31b62e633654be43f0f3d003520387e8fd2ed2a1 Mon Sep 17 00:00:00 2001 From: dilanua Date: Thu, 21 Jul 2016 12:54:39 +0530 Subject: [PATCH 2/2] Adding jaggery.conf url mapping for data-tables-invoker-api --- .../jaggeryapps/devicemgt/api/data-tables-invoker-api.jag | 2 +- .../src/main/resources/jaggeryapps/devicemgt/jaggery.conf | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/api/data-tables-invoker-api.jag b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/api/data-tables-invoker-api.jag index 160a7ff517c..88babb54f0f 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/api/data-tables-invoker-api.jag +++ b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/api/data-tables-invoker-api.jag @@ -22,7 +22,7 @@ var log = new Log("api/data-tables-invoker-api.jag"); var uri = request.getRequestURI(); var uriMatcher = new URIMatcher(String(uri)); -var devicemgtProps = require('/app/conf/devicemgt-props.js').config(); +var devicemgtProps = require("/app/conf/devicemgt-props.js").config(); var serviceInvokers = require("/app/modules/backend-service-invoker.js")["backendServiceInvoker"]; if (uriMatcher.match("/{context}/api/data-tables/invoker")) { diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/jaggery.conf b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/jaggery.conf index 28ddcefb6c1..909af4c4569 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/jaggery.conf +++ b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/jaggery.conf @@ -1,6 +1,6 @@ { "displayName": "Carbon Device Management App", - "logLevel": "warn", + "logLevel": "info", "initScripts": ["/app/modules/init.js"], "urlMappings": [ { @@ -50,6 +50,10 @@ { "url": "/*", "path": "/lib/pages.jag" + }, + { + "url": "/api/data-tables/invoker", + "path": "/api/data-tables-invoker-api.jag" } ] } \ No newline at end of file