MCPcopy
hub / github.com/mgonto/restangular / elemFunction

Function elemFunction

src/restangular.js:1222–1321  ·  view source on GitHub ↗
(operation, what, params, obj, headers)

Source from the content-addressed store, hash-verified

1220 }
1221
1222 function elemFunction(operation, what, params, obj, headers) {
1223 var __this = this;
1224 var deferred = $q.defer();
1225 var resParams = params || {};
1226 var route = what || this[config.restangularFields.route];
1227 var fetchUrl = urlHandler.fetchUrl(this, what);
1228
1229 var callObj = obj || this;
1230 // fallback to etag on restangular object (since for custom methods we probably don't explicitly specify the etag field)
1231 var etag = callObj[config.restangularFields.etag] || (operation !== 'post' ? this[config.restangularFields.etag] : null);
1232
1233 if (_.isObject(callObj) && config.isRestangularized(callObj)) {
1234 callObj = stripRestangular(callObj);
1235 }
1236 var request = config.fullRequestInterceptor(callObj, operation, route, fetchUrl,
1237 headers || {}, resParams || {}, this[config.restangularFields.httpConfig] || {});
1238
1239 var filledObject = {};
1240 filledObject = config.transformElem(filledObject, false, route, service);
1241
1242 var okCallback = function(response) {
1243 var resData = response.data;
1244 var fullParams = response.config.params;
1245 var elem = parseResponse(resData, operation, route, fetchUrl, response, deferred);
1246
1247 // accept 0 as response
1248 if (elem !== null && elem !== undefined && elem !== '') {
1249 var data;
1250
1251 if (true === config.plainByDefault) {
1252 return resolvePromise(deferred, response, elem, filledObject);
1253 }
1254
1255 if (operation === 'post' && !__this[config.restangularFields.restangularCollection]) {
1256 data = restangularizeElem(
1257 __this[config.restangularFields.parentResource],
1258 elem,
1259 route,
1260 true,
1261 null,
1262 fullParams
1263 );
1264 resolvePromise(deferred, response, data, filledObject);
1265 } else {
1266 data = restangularizeElem(
1267 __this[config.restangularFields.parentResource],
1268 elem,
1269 __this[config.restangularFields.route],
1270 true,
1271 null,
1272 fullParams
1273 );
1274
1275 data[config.restangularFields.singleOne] = __this[config.restangularFields.singleOne];
1276 resolvePromise(deferred, response, data, filledObject);
1277 }
1278
1279 } else {

Callers

nothing calls this directly

Calls 2

stripRestangularFunction · 0.85
restangularizePromiseFunction · 0.85

Tested by

no test coverage detected