Skip to content

Instantly share code, notes, and snippets.

@d7my11
Created August 27, 2015 13:35
Show Gist options
  • Save d7my11/b3f4b01cae4508ed6b38 to your computer and use it in GitHub Desktop.
Save d7my11/b3f4b01cae4508ed6b38 to your computer and use it in GitHub Desktop.
var quer = {};
var pagination = {};
Restangular.addFullRequestInterceptor(function(element, operation, what, url, headers, params) {
var query = params;
if (operation === 'getList') {
if (Common.query) {
query = _.cloneDeep(Common.query);
angular.extend(query, params);
if (query.limit === 0) {
delete query.page;
delete query.offset;
}
// No need to query the db for more than one item if all
// what we want is meta data
if (query.meta_only) {
query.limit = 1;
}
}
} else {
headers['X-CSRFToken'] = $cookies.csrftoken;
}
return {
element: element,
params: query,
headers: headers
};
});
function cleanRestangular(element) {
_.each(element, function(v, k) {
if (_.isObject(v)) {
if (v.resource_uri) {
element[k] = v.resource_uri;
// For Course Element update
} else if (k === 'children') {
_.each(element.children, cleanRestangular);
} else {
delete v.parentResource;
delete v.reqParams;
delete v.fromServer;
delete v.route;
delete v.restangularCollection;
}
}
});
}
// add a request intereceptor
Restangular.addRequestInterceptor(function(element, operation, what, url) {
cleanRestangular(element);
return element;
});
// add a response intereceptor
var paginable = ['my', 'available'];
Restangular.addResponseInterceptor(function(data, operation, what, url, response, deferred) {
var extractedData;
if (operation === "getList") {
extractedData = data.objects || [];
extractedData.meta = data.meta;
if (what !== 'profile' && what !== 'notification' &&
data.meta.limit !== 0 && data.meta.limit !== 1000) {
Common.pagination = data.meta;
root.$broadcast('list_response');
}
} else {
extractedData = data;
// If paginable GET operation
if (paginable.indexOf(what) > -1) {
Common.pagination = data.meta;
root.$broadcast('list_response');
}
}
return extractedData;
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment