Skip to content

Commit 56d216d

Browse files
committed
Stable Version 1.2.0.
1 parent 3aac713 commit 56d216d

8 files changed

+89
-7
lines changed

CHANGELOG.md

+5
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
##### 1.2.0 - 24 February 2015
2+
3+
###### Backwards compatible API changes
4+
- Added `suffix` option
5+
16
##### 1.1.0 - 04 February 2015
27

38
Now requiring js-data 1.1.0 to allow for safe stringification of cyclic objects

Gruntfile.js

+3
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,9 @@ module.exports = function (grunt) {
3535
uglify: {
3636
main: {
3737
options: {
38+
report: 'min',
39+
sourceMap: true,
40+
sourceMapName: 'dist/js-data-http.min.map',
3841
banner: '/**\n' +
3942
'* @author Jason Dobry <[email protected]>\n' +
4043
'* @file js-data-http.min.js\n' +

dist/js-data-http.js

+12-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/**
22
* @author Jason Dobry <[email protected]>
33
* @file js-data-http.js
4-
* @version 1.1.0 - Homepage <http://www.js-data.io/docs/dshttpadapter>
4+
* @version 1.2.0 - Homepage <http://www.js-data.io/docs/dshttpadapter>
55
* @copyright (c) 2014 Jason Dobry
66
* @license MIT <https://github.com/js-data/js-data-http/blob/master/LICENSE>
77
*
@@ -1924,6 +1924,10 @@ dsHttpAdapterPrototype.HTTP = function (config) {
19241924
if (typeof config.data === 'object') {
19251925
config.data = DSUtils.removeCircular(config.data);
19261926
}
1927+
var suffix = config.suffix || _this.defaults.suffix;
1928+
if (suffix && config.url.substr(config.url.length - suffix.length) !== suffix) {
1929+
config.url += suffix;
1930+
}
19271931

19281932
function logResponse(data) {
19291933
var str = start.toUTCString() + ' - ' + data.config.method.toUpperCase() + ' ' + data.config.url + ' - ' + data.status + ' ' + (new Date().getTime() - start.getTime()) + 'ms';
@@ -1988,6 +1992,7 @@ dsHttpAdapterPrototype.DEL = function (url, config) {
19881992
dsHttpAdapterPrototype.find = function (resourceConfig, id, options) {
19891993
var _this = this;
19901994
options = options || {};
1995+
options.suffix = options.suffix || resourceConfig.suffix;
19911996
return _this.GET(
19921997
_this.getPath('find', resourceConfig, id, options),
19931998
options
@@ -2000,6 +2005,7 @@ dsHttpAdapterPrototype.findAll = function (resourceConfig, params, options) {
20002005
var _this = this;
20012006
options = options || {};
20022007
options = DSUtils.copy(options);
2008+
options.suffix = options.suffix || resourceConfig.suffix;
20032009
options.params = options.params || {};
20042010
if (params) {
20052011
params = _this.defaults.queryTransform(resourceConfig, params);
@@ -2016,6 +2022,7 @@ dsHttpAdapterPrototype.findAll = function (resourceConfig, params, options) {
20162022
dsHttpAdapterPrototype.create = function (resourceConfig, attrs, options) {
20172023
var _this = this;
20182024
options = options || {};
2025+
options.suffix = options.suffix || resourceConfig.suffix;
20192026
return _this.POST(
20202027
_this.getPath('create', resourceConfig, attrs, options),
20212028
options.serialize ? options.serialize(resourceConfig, attrs) : _this.defaults.serialize(resourceConfig, attrs),
@@ -2028,6 +2035,7 @@ dsHttpAdapterPrototype.create = function (resourceConfig, attrs, options) {
20282035
dsHttpAdapterPrototype.update = function (resourceConfig, id, attrs, options) {
20292036
var _this = this;
20302037
options = options || {};
2038+
options.suffix = options.suffix || resourceConfig.suffix;
20312039
return _this.PUT(
20322040
_this.getPath('update', resourceConfig, id, options),
20332041
options.serialize ? options.serialize(resourceConfig, attrs) : _this.defaults.serialize(resourceConfig, attrs),
@@ -2041,6 +2049,7 @@ dsHttpAdapterPrototype.updateAll = function (resourceConfig, attrs, params, opti
20412049
var _this = this;
20422050
options = options || {};
20432051
options = DSUtils.copy(options);
2052+
options.suffix = options.suffix || resourceConfig.suffix;
20442053
options.params = options.params || {};
20452054
if (params) {
20462055
params = _this.defaults.queryTransform(resourceConfig, params);
@@ -2058,6 +2067,7 @@ dsHttpAdapterPrototype.updateAll = function (resourceConfig, attrs, params, opti
20582067
dsHttpAdapterPrototype.destroy = function (resourceConfig, id, options) {
20592068
var _this = this;
20602069
options = options || {};
2070+
options.suffix = options.suffix || resourceConfig.suffix;
20612071
return _this.DEL(
20622072
_this.getPath('destroy', resourceConfig, id, options),
20632073
options
@@ -2070,6 +2080,7 @@ dsHttpAdapterPrototype.destroyAll = function (resourceConfig, params, options) {
20702080
var _this = this;
20712081
options = options || {};
20722082
options = DSUtils.copy(options);
2083+
options.suffix = options.suffix || resourceConfig.suffix;
20732084
options.params = options.params || {};
20742085
if (params) {
20752086
params = _this.defaults.queryTransform(resourceConfig, params);

dist/js-data-http.min.js

+4-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/js-data-http.min.map

+1
Large diffs are not rendered by default.

package.json

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "js-data-http",
33
"description": "http adapter for js-data.",
4-
"version": "1.1.0",
4+
"version": "1.2.0",
55
"homepage": "http://www.js-data.io/docs/dshttpadapter",
66
"repository": {
77
"type": "git",
@@ -20,10 +20,10 @@
2020
"main": "./src/index.js",
2121
"devDependencies": {
2222
"grunt": "0.4.5",
23-
"grunt-browserify": "3.3.0",
23+
"grunt-browserify": "3.4.0",
2424
"grunt-contrib-clean": "0.6.0",
2525
"grunt-contrib-jshint": "0.11.0",
26-
"grunt-contrib-uglify": "0.7.0",
26+
"grunt-contrib-uglify": "0.8.0",
2727
"grunt-contrib-watch": "0.6.1",
2828
"grunt-karma": "0.10.1",
2929
"grunt-karma-coveralls": "2.5.3",
@@ -37,7 +37,7 @@
3737
"karma-mocha": "0.1.10",
3838
"karma-sinon": "1.0.4",
3939
"karma-spec-reporter": "0.0.16",
40-
"time-grunt": "1.0.0",
40+
"time-grunt": "1.1.0",
4141
"jit-grunt": "0.9.1"
4242
},
4343
"scripts": {

src/index.js

+11
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,10 @@ dsHttpAdapterPrototype.HTTP = function (config) {
8585
if (typeof config.data === 'object') {
8686
config.data = DSUtils.removeCircular(config.data);
8787
}
88+
var suffix = config.suffix || _this.defaults.suffix;
89+
if (suffix && config.url.substr(config.url.length - suffix.length) !== suffix) {
90+
config.url += suffix;
91+
}
8892

8993
function logResponse(data) {
9094
var str = start.toUTCString() + ' - ' + data.config.method.toUpperCase() + ' ' + data.config.url + ' - ' + data.status + ' ' + (new Date().getTime() - start.getTime()) + 'ms';
@@ -149,6 +153,7 @@ dsHttpAdapterPrototype.DEL = function (url, config) {
149153
dsHttpAdapterPrototype.find = function (resourceConfig, id, options) {
150154
var _this = this;
151155
options = options || {};
156+
options.suffix = options.suffix || resourceConfig.suffix;
152157
return _this.GET(
153158
_this.getPath('find', resourceConfig, id, options),
154159
options
@@ -161,6 +166,7 @@ dsHttpAdapterPrototype.findAll = function (resourceConfig, params, options) {
161166
var _this = this;
162167
options = options || {};
163168
options = DSUtils.copy(options);
169+
options.suffix = options.suffix || resourceConfig.suffix;
164170
options.params = options.params || {};
165171
if (params) {
166172
params = _this.defaults.queryTransform(resourceConfig, params);
@@ -177,6 +183,7 @@ dsHttpAdapterPrototype.findAll = function (resourceConfig, params, options) {
177183
dsHttpAdapterPrototype.create = function (resourceConfig, attrs, options) {
178184
var _this = this;
179185
options = options || {};
186+
options.suffix = options.suffix || resourceConfig.suffix;
180187
return _this.POST(
181188
_this.getPath('create', resourceConfig, attrs, options),
182189
options.serialize ? options.serialize(resourceConfig, attrs) : _this.defaults.serialize(resourceConfig, attrs),
@@ -189,6 +196,7 @@ dsHttpAdapterPrototype.create = function (resourceConfig, attrs, options) {
189196
dsHttpAdapterPrototype.update = function (resourceConfig, id, attrs, options) {
190197
var _this = this;
191198
options = options || {};
199+
options.suffix = options.suffix || resourceConfig.suffix;
192200
return _this.PUT(
193201
_this.getPath('update', resourceConfig, id, options),
194202
options.serialize ? options.serialize(resourceConfig, attrs) : _this.defaults.serialize(resourceConfig, attrs),
@@ -202,6 +210,7 @@ dsHttpAdapterPrototype.updateAll = function (resourceConfig, attrs, params, opti
202210
var _this = this;
203211
options = options || {};
204212
options = DSUtils.copy(options);
213+
options.suffix = options.suffix || resourceConfig.suffix;
205214
options.params = options.params || {};
206215
if (params) {
207216
params = _this.defaults.queryTransform(resourceConfig, params);
@@ -219,6 +228,7 @@ dsHttpAdapterPrototype.updateAll = function (resourceConfig, attrs, params, opti
219228
dsHttpAdapterPrototype.destroy = function (resourceConfig, id, options) {
220229
var _this = this;
221230
options = options || {};
231+
options.suffix = options.suffix || resourceConfig.suffix;
222232
return _this.DEL(
223233
_this.getPath('destroy', resourceConfig, id, options),
224234
options
@@ -231,6 +241,7 @@ dsHttpAdapterPrototype.destroyAll = function (resourceConfig, params, options) {
231241
var _this = this;
232242
options = options || {};
233243
options = DSUtils.copy(options);
244+
options.suffix = options.suffix || resourceConfig.suffix;
234245
options.params = options.params || {};
235246
if (params) {
236247
params = _this.defaults.queryTransform(resourceConfig, params);

test/find.spec.js

+49
Original file line numberDiff line numberDiff line change
@@ -90,4 +90,53 @@ describe('DSHttpAdapter.find(resourceConfig, id, options)', function () {
9090
_this.requests[0].respond(404, { 'Content-Type': 'text/plain' }, 'Not Found');
9191
}, 10);
9292
});
93+
94+
it('should use suffixes', function (done) {
95+
var _this = this;
96+
97+
var Thing = datastore.defineResource({
98+
name: 'thing',
99+
endpoint: 'things',
100+
suffix: '.xml'
101+
});
102+
103+
var otherAdapter = new DSHttpAdapter({
104+
suffix: '.json'
105+
});
106+
107+
dsHttpAdapter.find(Thing, 1).then(function () {
108+
109+
otherAdapter.find(Post, 1).then(function () {
110+
done();
111+
}).catch(function (err) {
112+
console.error(err.stack);
113+
done('should not have rejected');
114+
});
115+
116+
setTimeout(function () {
117+
try {
118+
assert.equal(2, _this.requests.length);
119+
assert.equal(_this.requests[1].url, 'api/posts/1.json');
120+
assert.equal(_this.requests[1].method, 'GET');
121+
_this.requests[1].respond(200, { 'Content-Type': 'application/json' }, JSON.stringify({ id: 1 }));
122+
} catch (e) {
123+
done(e);
124+
}
125+
}, 10);
126+
}).catch(function (err) {
127+
console.error(err.stack);
128+
done('should not have rejected');
129+
});
130+
131+
setTimeout(function () {
132+
try {
133+
assert.equal(1, _this.requests.length);
134+
assert.equal(_this.requests[0].url, 'things/1.xml');
135+
assert.equal(_this.requests[0].method, 'GET');
136+
_this.requests[0].respond(200, { 'Content-Type': 'application/json' }, JSON.stringify({ id: 1 }));
137+
} catch (e) {
138+
done(e);
139+
}
140+
}, 10);
141+
});
93142
});

0 commit comments

Comments
 (0)