Skip to content

Instantly share code, notes, and snippets.

@eduardolundgren
Created November 20, 2012 19:18
Show Gist options
  • Save eduardolundgren/4120363 to your computer and use it in GitHub Desktop.
Save eduardolundgren/4120363 to your computer and use it in GitHub Desktop.
var ServiceUtil = {
invoke: function(payload, ioConfig) {
var instance = this;
if (ioConfig) {
if (!owns(ioConfig, 'cache') && REGEX_METHOD_GET.test(ioConfig.method)) {
ioConfig.cache = false;
}
if (Liferay.PropsValues.NTLM_AUTH_ENABLED && Liferay.Browser.isIe()) {
ioConfig.method = 'GET';
}
}
return A.io.request(
themeDisplay.getPathContext() + '/api/jsonws/invoke',
A.merge(
{
data: {
cmd: A.JSON.stringify(payload),
p_auth: Liferay.authToken
},
dataType: 'json'
},
ioConfig
)
);
},
parseInvokeArgs: function(args) {
var instance = this;
var payload = args[0];
var ioConfig = instance.parseIOConfig(args);
if (Lang.isString(payload)) {
payload = instance.parseStringPayload(args);
}
return [ payload, ioConfig ];
},
parseIOConfig: function(args) {
var instance = this;
var payload = args[0];
var ioConfig = payload.io;
payload.io = undefined;
if (!ioConfig) {
var callbacks = [];
var callbackIndex = 0;
while (args[callbackIndex++]) {
var callback = args[callbackIndex++];
if (Lang.isFunction(callback)) {
callbacks.push(callback);
}
}
var callbackSuccess = callbacks[0];
var callbackException = callbacks[1];
ioConfig = {
on: {
success: function(event) {
var responseData = this.get('responseData');
if (responseData && !owns(responseData, 'exception')) {
if (callbackSuccess) {
callbackSuccess.call(this, responseData);
}
}
else if (callbackException) {
var exception = responseData ? responseData.exception : 'The server returned an empty response';
callbackException.call(this, exception, responseData);
}
}
}
};
}
return ioConfig;
},
parseStringPayload: function(args) {
var instance = this;
var params = {};
var payload = {};
if (!Lang.isFunction(args[1])) {
params = args[1];
}
payload[args[0]] = params;
return payload;
}
};
Liferay.Service = function() {
var instance = this;
var args = ServiceUtil.parseInvokeArgs(arguments);
ServiceUtil.invoke.apply(ServiceUtil, args);
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment