(function() { define(['utils', 'noty'], function(_utils, _noty) { var method, processor, restful, _i, _len, _ref; restful = { urlPlaceholder: function(url, params) { url = url.replace(/:(.+)\//, function(m, key) { return params[key] + '/'; }); return url.replace(/:(.+)$/, function(m, key) { return params[key]; }); }, ajax: function(action, url, data, cb) { return $.ajax({ beforeSend: function(xhr) { return xhr.setRequestHeader('language', _utils.language); }, url: url, type: action, data: data, success: cb, statusCode: { 404: function() { return _noty.error('API Not Found.'); }, 406: function(xhr) { data = xhr.responseJSON; return _noty.error(data.message[_utils.language] || data.message); }, 403: function(xhr) { data = xhr.responseJSON; return _noty.error(data.message[_utils.language]); }, 401: function() { return alert('请重新登录'); }, 500: function() { return alert('服务器出错了'); } } }); }, request: function(action, api, data, params, cb) { var query, url; if (typeof data === 'function') { cb = data; params = void 0; data = void 0; } else if (typeof params === 'function') { cb = params; params = void 0; } if (action === 'delete' && data) { query = $.param(data); api += api.indexOf('?') < 0 ? "?" : "&"; api += query; } if (params) { api = this.urlPlaceholder(api, params); } url = "/api/" + api; return this.ajax(action, url, data, cb); } }; processor = function(method) { return restful[method] = function(api, data, params, cb) { if (method === 'save') { method = data.id ? 'put' : 'post'; } if ((method === 'delete' || method === 'get') && /^\d+$/.test(data)) { api = api + "/" + data; data = null; } if (method === 'put' && data.id) { api = api + "/" + data.id; } return restful.request(method, api, data, params, cb); }; }; _ref = ['post', 'get', 'delete', 'put', 'save']; for (_i = 0, _len = _ref.length; _i < _len; _i++) { method = _ref[_i]; processor(method); } return restful; }); }).call(this);