Skip to content

Commit

Permalink
Adding cleanup changes
Browse files Browse the repository at this point in the history
  • Loading branch information
mgonto committed Apr 3, 2015
2 parents 217f8a5 + 309891a commit e795cd3
Show file tree
Hide file tree
Showing 10 changed files with 213 additions and 32 deletions.
4 changes: 2 additions & 2 deletions README.md
Expand Up @@ -184,7 +184,7 @@ The Restangular service may be injected into any Controller or Directive :)
Note: When adding Restangular as a dependency it is not capitalized 'restangular'
But when injected into your controller it is 'Restangular'

**[Back to top](#table-of-contents)**
**[Back to top](#table-of-contents)**

## Using Restangular

Expand Down Expand Up @@ -674,7 +674,7 @@ module.factory('Users', function(Restangular) {
});

// In your controller you inject Users
Users.one(2).get() // GET to /users/2
Users.get(2) // GET to /users/2
Users.post({data}) // POST to /users

// GET to /users
Expand Down
4 changes: 2 additions & 2 deletions bower.json
Expand Up @@ -8,8 +8,8 @@
"url": "git://github.com/mgonto/restangular.git"
},
"dependencies": {
"lodash": ">=1.3.0 <2.5.0",
"angular": "~1.2.x"
"lodash": ">=1.3.0",
"angular": "~1.x"
},
"ignore": [
"node_modules",
Expand Down
38 changes: 29 additions & 9 deletions dist/restangular.js
@@ -1,6 +1,6 @@
/**
* Restful Resources service for AngularJS apps
* @version v1.4.0 - 2015-02-04 * @link https://github.com/mgonto/restangular
* @version v1.4.0 - 2015-04-03 * @link https://github.com/mgonto/restangular
* @author Martin Gontovnikas <martin@gon.to>
* @license MIT License, http://www.opensource.org/licenses/MIT
*/(function() {
Expand Down Expand Up @@ -640,6 +640,12 @@ restangular.provider('Restangular', function() {

Path.prototype = new BaseCreator();

Path.prototype.normalizeUrl = function (url){
var parts = /(http[s]?:\/\/)?(.*)?/.exec(url);
parts[2] = parts[2].replace(/[\\\/]+/g, '/');
return (typeof parts[1] !== 'undefined')? parts[1] + parts[2] : parts[2];
};

Path.prototype.base = function(current) {
var __this = this;
return _.reduce(this.parentsArray(current), function(acum, elem) {
Expand Down Expand Up @@ -672,8 +678,8 @@ restangular.provider('Restangular', function() {
}
}
}

return acum.replace(/\/$/, '') + '/' + elemUrl;
acum = acum.replace(/\/$/, '') + '/' + elemUrl;
return __this.normalizeUrl(acum);

}, this.config.baseUrl);
};
Expand Down Expand Up @@ -725,7 +731,7 @@ restangular.provider('Restangular', function() {
replace(/%20/g, (pctEncodeSpaces ? '%20' : '+'));
}

if (!params) { return url; }
if (!params) { return url + (this.config.suffix || ''); }

var parts = [];
forEachSorted(params, function(value, key) {
Expand Down Expand Up @@ -807,9 +813,15 @@ restangular.provider('Restangular', function() {
}

function one(parent, route, id, singleOne) {
var error;
if (_.isNumber(route) || _.isNumber(parent)) {
var error = 'You\'re creating a Restangular entity with the number ';
error += 'instead of the route or the parent. For example, you can\'t call .one(12)';
error = 'You\'re creating a Restangular entity with the number ';
error += 'instead of the route or the parent. For example, you can\'t call .one(12).';
throw new Error(error);
}
if (_.isUndefined(route)) {
error = 'You\'re creating a Restangular entity either without the path. ';
error += 'For example you can\'t call .one(). Please check if your arguments are valid.';
throw new Error(error);
}
var elem = {};
Expand Down Expand Up @@ -1155,7 +1167,15 @@ restangular.provider('Restangular', function() {
if (elem) {

if (operation === 'post' && !__this[config.restangularFields.restangularCollection]) {
resolvePromise(deferred, response, restangularizeElem(__this, elem, what, true, null, fullParams), filledObject);
var data = restangularizeElem(
__this[config.restangularFields.parentResource],
elem,
route,
true,
null,
fullParams
);
resolvePromise(deferred, response, data, filledObject);
} else {
var data = restangularizeElem(
__this[config.restangularFields.parentResource],
Expand Down Expand Up @@ -1183,13 +1203,13 @@ restangular.provider('Restangular', function() {
deferred.reject(response);
}
};
// Overring HTTP Method
// Overriding HTTP Method
var callOperation = operation;
var callHeaders = _.extend({}, request.headers);
var isOverrideOperation = config.isOverridenMethod(operation);
if (isOverrideOperation) {
callOperation = 'post';
callHeaders = _.extend(callHeaders, {'X-HTTP-Method-Override': operation === 'remove' ? 'DELETE' : operation});
callHeaders = _.extend(callHeaders, {'X-HTTP-Method-Override': operation === 'remove' ? 'DELETE' : operation.toUpperCase()});
} else if (config.jsonp && callOperation === 'get') {
callOperation = 'jsonp';
}
Expand Down
4 changes: 2 additions & 2 deletions dist/restangular.min.js

Large diffs are not rendered by default.

Binary file modified dist/restangular.zip
Binary file not shown.
6 changes: 3 additions & 3 deletions karma.conf.js
Expand Up @@ -11,9 +11,9 @@ module.exports = function(config) {

// list of files / patterns to load in the browser
files: [
'https://ajax.googleapis.com/ajax/libs/angularjs/1.3.0-beta.6/angular.js',
'https://ajax.googleapis.com/ajax/libs/angularjs/1.3.0-beta.6/angular-mocks.js',
'http://cdnjs.cloudflare.com/ajax/libs/lodash.js/2.4.1/lodash.js',
'https://ajax.googleapis.com/ajax/libs/angularjs/1.3.12/angular.js',
'https://ajax.googleapis.com/ajax/libs/angularjs/1.3.12/angular-mocks.js',
'http://cdnjs.cloudflare.com/ajax/libs/lodash.js/3.3.0/lodash.js',
'src/restangular.js',
'test/*.js'
],
Expand Down
2 changes: 1 addition & 1 deletion karma.underscore.conf.js
Expand Up @@ -13,7 +13,7 @@ module.exports = function(config) {
files: [
'https://ajax.googleapis.com/ajax/libs/angularjs/1.3.0-beta.6/angular.js',
'https://ajax.googleapis.com/ajax/libs/angularjs/1.3.0-beta.6/angular-mocks.js',
'http://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.6.0/underscore.js',
'http://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.1/underscore.js',
'src/restangular.js',
'test/*.js'
],
Expand Down
5 changes: 2 additions & 3 deletions package.json
Expand Up @@ -29,7 +29,7 @@
}
],
"dependencies": {
"lodash": ">=1.3.0 <2.5.0"
"lodash": ">=1.3.0"
},
"devDependencies": {
"grunt-cli": ">= 0.1.7",
Expand All @@ -38,7 +38,6 @@
"grunt-contrib-uglify": "*",
"grunt-bower": "*",
"grunt-bower-task": "*",

"grunt-karma": "latest",
"grunt-conventional-changelog": "0.0.12",
"grunt-zip": "*",
Expand All @@ -53,4 +52,4 @@
"test": "grunt test --verbose"
},
"license": "MIT"
}
}
34 changes: 27 additions & 7 deletions src/restangular.js
Expand Up @@ -635,6 +635,12 @@ restangular.provider('Restangular', function() {

Path.prototype = new BaseCreator();

Path.prototype.normalizeUrl = function (url){
var parts = /(http[s]?:\/\/)?(.*)?/.exec(url);
parts[2] = parts[2].replace(/[\\\/]+/g, '/');
return (typeof parts[1] !== 'undefined')? parts[1] + parts[2] : parts[2];
};

Path.prototype.base = function(current) {
var __this = this;
return _.reduce(this.parentsArray(current), function(acum, elem) {
Expand Down Expand Up @@ -667,8 +673,8 @@ restangular.provider('Restangular', function() {
}
}
}

return acum.replace(/\/$/, '') + '/' + elemUrl;
acum = acum.replace(/\/$/, '') + '/' + elemUrl;
return __this.normalizeUrl(acum);

}, this.config.baseUrl);
};
Expand Down Expand Up @@ -802,9 +808,15 @@ restangular.provider('Restangular', function() {
}

function one(parent, route, id, singleOne) {
var error;
if (_.isNumber(route) || _.isNumber(parent)) {
var error = 'You\'re creating a Restangular entity with the number ';
error += 'instead of the route or the parent. For example, you can\'t call .one(12)';
error = 'You\'re creating a Restangular entity with the number ';
error += 'instead of the route or the parent. For example, you can\'t call .one(12).';
throw new Error(error);
}
if (_.isUndefined(route)) {
error = 'You\'re creating a Restangular entity either without the path. ';
error += 'For example you can\'t call .one(). Please check if your arguments are valid.';
throw new Error(error);
}
var elem = {};
Expand Down Expand Up @@ -1150,7 +1162,15 @@ restangular.provider('Restangular', function() {
if (elem) {

if (operation === 'post' && !__this[config.restangularFields.restangularCollection]) {
resolvePromise(deferred, response, restangularizeElem(__this, elem, what, true, null, fullParams), filledObject);
var data = restangularizeElem(
__this[config.restangularFields.parentResource],
elem,
route,
true,
null,
fullParams
);
resolvePromise(deferred, response, data, filledObject);
} else {
var data = restangularizeElem(
__this[config.restangularFields.parentResource],
Expand Down Expand Up @@ -1178,13 +1198,13 @@ restangular.provider('Restangular', function() {
deferred.reject(response);
}
};
// Overring HTTP Method
// Overriding HTTP Method
var callOperation = operation;
var callHeaders = _.extend({}, request.headers);
var isOverrideOperation = config.isOverridenMethod(operation);
if (isOverrideOperation) {
callOperation = 'post';
callHeaders = _.extend(callHeaders, {'X-HTTP-Method-Override': operation === 'remove' ? 'DELETE' : operation});
callHeaders = _.extend(callHeaders, {'X-HTTP-Method-Override': operation === 'remove' ? 'DELETE' : operation.toUpperCase()});
} else if (config.jsonp && callOperation === 'get') {
callOperation = 'jsonp';
}
Expand Down

0 comments on commit e795cd3

Please sign in to comment.