(function() {
window.mapper = new AcidJs.RestMethodMapper("rest/", {
"user/get/": {
type: "GET",
cache: false,
success: function(response) {
console.log("success:", response);
},
error: function(jqXHR, textStatus, errorThrown) {
console.log("error: ", jqXHR, textStatus, errorThrown);
},
dataType: "json"
},
"user/get/my/": {
type: "get",
success: function() {
},
error: function(jqXHR, textStatus, errorThrown) {
console.log("error: ", jqXHR, textStatus, errorThrown);
},
dataType: "json"
},
"msg/post/new/": {
type: "post",
success: function() {
},
error: function(jqXHR, textStatus, errorThrown) {
console.log("error: ", jqXHR, textStatus, errorThrown);
},
dataType: "json"
}
});
window.mapper.userGet({
firstName: "John",
lastName: "Smith",
id: 9999
});
window.mapper.userGetMy();
window.mapper.msgPostNew({
id: 1234,
body: "Lorem ipsum dolot sit amet"
});
})();
(function() {
"use strict";
/*
* @namespace AcidJs
**/
if(undefined === window.AcidJs) {
window.AcidJs = {};
}
/*
* @class RestMethodMapper
* @constructor
* @param endpoint {String}
* @param method {String} rest api method, for example "user/get/my"
* @author Martin Ivanov http://acidjs.wemakesites.net
**/
function RestMethodMapper(endpoint, method) {
endpoint = endpoint || "";
method = method || {};
var
that = this;
$.each(method, function(key, value) {
(function() {
var
name = that.restToMethod(key);
if(!that[name]) {
var
ajaxConfig = {
url: endpoint + key
};
if(value) {
$.each(value, function(k, v) {
ajaxConfig[k] = v;
});
}
that[name] = function(data) {
if(data) {
ajaxConfig.data = data;
}
$.ajax(ajaxConfig);
};
}
})();
});
}
RestMethodMapper.prototype = {
/*
* @method restToMethod convert RESTFul api method to a JavaScript method
* @param url {String}
* @return {String}
**/
restToMethod: function(url){
if(!url) {
return "";
}
var
path = url.split("/"),
methodName = "";
for(var i = 0, len = path.length; i < len; i++) {
methodName += (i === 0) ? path[i] : path[i].charAt(0).toUpperCase() + path[i].substr(1);
}
return methodName;
}
};
window.AcidJs.RestMethodMapper = RestMethodMapper;
})();