From bb33b4ea12a66c1c81acdb9551b30a1ac5c8f4ce Mon Sep 17 00:00:00 2001 From: Rasika Perera Date: Wed, 20 Apr 2016 13:37:42 +0530 Subject: [PATCH] Parameterizing Content-Type and Accept headers. --- .../jaggeryapps/devicemgt/api/invoker-api.jag | 47 ++++++++++------ .../app/modules/backend-service-invoker.js | 54 ++++++++++--------- .../public/js/invoker-lib.js | 30 ++++++----- 3 files changed, 80 insertions(+), 51 deletions(-) diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/api/invoker-api.jag b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/api/invoker-api.jag index 45b9127143..ac587def72 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/api/invoker-api.jag +++ b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/api/invoker-api.jag @@ -30,11 +30,13 @@ var result; if (uriMatcher.match("/{context}/api/invoker/execute/")) { var method = request.getContent().actionMethod; - var targetURL = devicemgtProps.httpsURL + request.getContent().actionUrl; + var targetURL = getTargetUrl(devicemgtProps.httpsURL, request.getContent().actionUrl); var payload = request.getContent().actionPayload; + var contentType = request.getHeader(constants.CONTENT_TYPE_IDENTIFIER); + var acceptType = request.getHeader(constants.ACCEPT_IDENTIFIER); if (method == undefined && payload == undefined) { method = parse(request.getContent()).actionMethod; - targetURL = devicemgtProps.httpsURL + parse(request.getContent()).actionUrl; + targetURL = getTargetUrl(devicemgtProps.httpsURL, parse(request.getContent()).actionUrl); payload = parse(request.getContent()).actionPayload; } try { @@ -48,7 +50,9 @@ if (uriMatcher.match("/{context}/api/invoker/execute/")) { function (responsePayload) { response.status = responsePayload.status; response.content = responsePayload.responseText; - }); + }, + contentType, + acceptType); break; case constants.HTTP_POST: var responseData = serviceInvokers.XMLHttp.post( @@ -59,7 +63,9 @@ if (uriMatcher.match("/{context}/api/invoker/execute/")) { function (responsePayload) { response.status = responsePayload.status; response.content = responsePayload.responseText; - }); + }, + contentType, + acceptType); break; case constants.HTTP_PUT: var responseData = serviceInvokers.XMLHttp.put( @@ -70,19 +76,22 @@ if (uriMatcher.match("/{context}/api/invoker/execute/")) { function (responsePayload) { response.status = responsePayload.status; response.content = responsePayload.responseText; - }); + }, + contentType, + acceptType); break; case constants.HTTP_DELETE: - var responseData = - serviceInvokers.XMLHttp.delete( - targetURL, function (responsePayload) { - response.status = 200; - response.content = responsePayload; - }, - function (responsePayload) { - response.status = responsePayload.status; - response.content = responsePayload.responseText; - }); + var responseData = serviceInvokers.XMLHttp.delete( + targetURL, function (responsePayload) { + response.status = 200; + response.content = responsePayload; + }, + function (responsePayload) { + response.status = responsePayload.status; + response.content = responsePayload.responseText; + }, + contentType, + acceptType); break; } } catch (e) { @@ -90,4 +99,12 @@ if (uriMatcher.match("/{context}/api/invoker/execute/")) { } } +function getTargetUrl(serverUrl, actionUrl){ + if(actionUrl == undefined || actionUrl.lastIndexOf("http", 0) === 0){ + return actionUrl; + } else { + return serverUrl + actionUrl; + } +} + %> 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 9aeb2e84de..6e7540b3f0 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 @@ -54,11 +54,17 @@ var backendServiceInvoker = function () { * @param errorCallback a function to be called if en error is reserved. * @param count a counter which hold the number of recursive execution */ - privateMethods.execute = function (method, url, successCallback, errorCallback, payload, count) { + privateMethods.execute = function (method, url, successCallback, errorCallback, payload, count, contentType, acceptType) { var xmlHttpRequest = new XMLHttpRequest(); xmlHttpRequest.open(method, url); - xmlHttpRequest.setRequestHeader(constants.CONTENT_TYPE_IDENTIFIER, constants.APPLICATION_JSON); - xmlHttpRequest.setRequestHeader(constants.ACCEPT_IDENTIFIER, constants.APPLICATION_JSON); + 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); if (IS_OAUTH_ENABLED) { var accessToken = privateMethods.getAccessToken(); if (!accessToken) { @@ -98,9 +104,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. */ - privateMethods.initiateXMLHTTPRequest = function (method, url, successCallback, errorCallback, payload) { + privateMethods.initiateXMLHTTPRequest = function (method, url, successCallback, errorCallback, payload, contentType, acceptType) { if (privateMethods.getAccessToken()) { - return privateMethods.execute(method, url, successCallback, errorCallback, payload, 0); + return privateMethods.execute(method, url, successCallback, errorCallback, payload, 0, contentType, acceptType); } }; @@ -112,7 +118,7 @@ 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. */ - privateMethods.initiateHTTPClientRequest = function (method, url, successCallback, errorCallback, payload) { + privateMethods.initiateHTTPClientRequest = function (method, url, successCallback, errorCallback, payload, contentType, acceptType) { var HttpClient = Packages.org.apache.commons.httpclient.HttpClient; var httpMethodObject; switch (method) { @@ -138,11 +144,11 @@ var backendServiceInvoker = function () { var Header = Packages.org.apache.commons.httpclient.Header; var header = new Header(); header.setName(constants.CONTENT_TYPE_IDENTIFIER); - header.setValue(constants.APPLICATION_JSON); + header.setValue(contentType); httpMethodObject.addRequestHeader(header); header = new Header(); header.setName(constants.ACCEPT_IDENTIFIER); - header.setValue(constants.APPLICATION_JSON); + header.setValue(acceptType); httpMethodObject.addRequestHeader(header); if (IS_OAUTH_ENABLED) { var accessToken = privateMethods.getAccessToken(); @@ -226,8 +232,8 @@ 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. */ - publicXMLHTTPInvokers.get = function (url, successCallback, errorCallback) { - return privateMethods.initiateXMLHTTPRequest(constants.HTTP_GET, url, successCallback, errorCallback); + publicXMLHTTPInvokers.get = function (url, successCallback, errorCallback, contentType, acceptType) { + return privateMethods.initiateXMLHTTPRequest(constants.HTTP_GET, url, successCallback, errorCallback, contentType, acceptType); }; /** @@ -237,8 +243,8 @@ 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. */ - publicXMLHTTPInvokers.post = function (url, payload, successCallback, errorCallback) { - return privateMethods.initiateXMLHTTPRequest(constants.HTTP_POST, url, successCallback, errorCallback, payload); + publicXMLHTTPInvokers.post = function (url, payload, successCallback, errorCallback, contentType, acceptType) { + return privateMethods.initiateXMLHTTPRequest(constants.HTTP_POST, url, successCallback, errorCallback, payload, contentType, acceptType); }; /** @@ -248,8 +254,8 @@ 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. */ - publicXMLHTTPInvokers.put = function (url, payload, successCallback, errorCallback) { - return privateMethods.initiateXMLHTTPRequest(constants.HTTP_PUT, url, successCallback, errorCallback, payload); + publicXMLHTTPInvokers.put = function (url, payload, successCallback, errorCallback, contentType, acceptType) { + return privateMethods.initiateXMLHTTPRequest(constants.HTTP_PUT, url, successCallback, errorCallback, payload, contentType, acceptType); }; /** @@ -258,8 +264,8 @@ 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. */ - publicXMLHTTPInvokers.delete = function (url, successCallback, errorCallback) { - return privateMethods.initiateXMLHTTPRequest(constants.HTTP_DELETE, url, successCallback, errorCallback); + publicXMLHTTPInvokers.delete = function (url, successCallback, errorCallback, contentType, acceptType) { + return privateMethods.initiateXMLHTTPRequest(constants.HTTP_DELETE, url, successCallback, errorCallback, contentType, acceptType); }; /** @@ -281,8 +287,8 @@ 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.get = function (url, successCallback, errorCallback) { - return privateMethods.initiateHTTPClientRequest(constants.HTTP_GET, url, successCallback, errorCallback); + publicHTTPClientInvokers.get = function (url, successCallback, errorCallback, contentType, acceptType) { + return privateMethods.initiateHTTPClientRequest(constants.HTTP_GET, url, successCallback, errorCallback, contentType, acceptType); }; /** @@ -292,9 +298,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) { + publicHTTPClientInvokers.post = function (url, payload, successCallback, errorCallback, contentType, acceptType) { return privateMethods. - initiateHTTPClientRequest(constants.HTTP_POST, url, successCallback, errorCallback, payload); + initiateHTTPClientRequest(constants.HTTP_POST, url, successCallback, errorCallback, payload, contentType, acceptType); }; /** @@ -304,8 +310,8 @@ 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) { - return privateMethods.initiateHTTPClientRequest(constants.HTTP_PUT, url, successCallback, errorCallback, payload); + publicHTTPClientInvokers.put = function (url, payload, successCallback, errorCallback, contentType, acceptType) { + return privateMethods.initiateHTTPClientRequest(constants.HTTP_PUT, url, successCallback, errorCallback, payload, contentType, acceptType); }; /** @@ -314,8 +320,8 @@ 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) { - return privateMethods.initiateHTTPClientRequest(constants.HTTP_DELETE, url, successCallback, errorCallback); + publicHTTPClientInvokers.delete = function (url, successCallback, errorCallback, contentType, acceptType) { + return privateMethods.initiateHTTPClientRequest(constants.HTTP_DELETE, url, successCallback, errorCallback, contentType, acceptType); }; var publicInvokers = {}; 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 00aa67e7d5..c94345469f 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 @@ -22,33 +22,39 @@ var invokerUtil = function () { var END_POINT = window.location.origin+"/devicemgt/api/invoker/execute/"; - module.get = function (url, successCallback, errorCallback) { + module.get = function (url, successCallback, errorCallback, contentType, acceptType) { var payload = null; - execute("GET", url, payload, successCallback, errorCallback); + execute("GET", url, payload, successCallback, errorCallback, contentType, acceptType); }; - module.post = function (url, payload, successCallback, errorCallback) { - execute("POST", url, payload, successCallback, errorCallback); + module.post = function (url, payload, successCallback, errorCallback, contentType, acceptType) { + execute("POST", url, payload, successCallback, errorCallback, contentType, acceptType); }; - module.put = function (url, payload, successCallback, errorCallback) { - execute("PUT", url, payload, successCallback, errorCallback); + module.put = function (url, payload, successCallback, errorCallback, contentType, acceptType) { + execute("PUT", url, payload, successCallback, errorCallback, contentType, acceptType); }; - module.delete = function (url, successCallback, errorCallback) { + module.delete = function (url, successCallback, errorCallback, contentType, acceptType) { var payload = null; - execute("DELETE", url, payload, successCallback, errorCallback); + execute("DELETE", url, payload, successCallback, errorCallback, contentType, acceptType); }; - function execute (methoad, url, payload, 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: "application/json", - accept: "application/json", + contentType: contentType, + accept: acceptType, success: successCallback }; console.log(data); var paramValue = {}; paramValue.actionMethod = methoad; paramValue.actionUrl = url; - paramValue.actionPayload = JSON.stringify(payload); + paramValue.actionPayload = payload; data.data = JSON.stringify(paramValue); $.ajax(data).fail(function (jqXHR) { if (jqXHR.status == "401") {