Skip to content

Commit d5c75c6

Browse files
committed
Merge pull request #81 from micro-toolkit/fix/status-codes-reply
Fix/status codes reply
2 parents e6485c0 + 311b5dc commit d5c75c6

File tree

10 files changed

+136
-150
lines changed

10 files changed

+136
-150
lines changed

lib/client.js

Lines changed: 6 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -17,46 +17,36 @@ function getConfig(runtimeConfig, modelName){
1717
throw new Error(msg);
1818
}
1919

20-
function payloadResolver(data){
21-
return data.payload;
22-
}
23-
2420
function init(modelName, runtimeConfig){
2521
var client = new ZSSClient(getConfig(runtimeConfig, modelName));
2622

2723
return {
2824
get: function(payload, headers){
29-
return client.call('get', payload || {}, { headers: headers })
30-
.then(payloadResolver);
25+
return client.call('get', payload || {}, { headers: headers });
3126
},
3227
list: function(payload, headers){
3328
log.trace('Call \'list\' with headers %j & payload %j', headers, payload);
34-
return client.call('list', payload || {}, { headers: headers })
35-
.then(payloadResolver);
29+
return client.call('list', payload || {}, { headers: headers });
3630
},
3731
create: function(payload, headers){
3832
log.trace('Call \'create\' with headers %j & payload %j',
3933
headers, payload);
40-
return client.call('create', payload || {}, { headers: headers })
41-
.then(payloadResolver);
34+
return client.call('create', payload || {}, { headers: headers });
4235
},
4336
update: function(payload, headers){
4437
log.trace('Call \'update\' with headers %j & payload %j',
4538
headers, payload);
46-
return client.call('update', payload || {}, { headers: headers })
47-
.then(payloadResolver);
39+
return client.call('update', payload || {}, { headers: headers });
4840
},
4941
remove: function(payload, headers){
5042
log.trace('Call \'remove\' with headers %j & payload %j',
5143
headers, payload);
52-
return client.call('remove', payload, { headers: headers })
53-
.then(payloadResolver);
44+
return client.call('remove', payload, { headers: headers });
5445
},
5546
call: function(verb, payload, headers){
5647
log.trace('Call \'%s\' with headers %j & payload %j',
5748
verb, headers, payload);
58-
return client.call(verb, payload, { headers: headers })
59-
.then(payloadResolver);
49+
return client.call(verb, payload, { headers: headers });
6050
}
6151
};
6252
}

lib/handlers.js

Lines changed: 25 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -72,8 +72,8 @@ function collectionHandler(metadata, config) {
7272
var headers = getHeaders(req, handlerConfig.claimsConfig);
7373
handlerConfig.client.list(payload, headers)
7474
.then(function(data){
75-
log.debug('collection data received: %j', data);
76-
var models = data.map(handlerConfig.toModel);
75+
log.debug('collection data received: %j', data.payload);
76+
var models = data.payload.map(handlerConfig.toModel);
7777
res.json(models);
7878
return next();
7979
})
@@ -96,8 +96,8 @@ function getResource(metadata, config) {
9696

9797
handlerConfig.client.get(payload, headers)
9898
.then(function(data){
99-
log.debug('resource data received: %j', data);
100-
var model = handlerConfig.toModel(data);
99+
log.debug('resource data received: %j', data.payload);
100+
var model = handlerConfig.toModel(data.payload);
101101
res.json(model);
102102
return next();
103103
})
@@ -116,8 +116,8 @@ function createResource(metadata, config) {
116116
var headers = getHeaders(req, handlerConfig.claimsConfig);
117117
handlerConfig.client.create(payload, headers)
118118
.then(function(data){
119-
log.debug('resource created successfully with: %j', data);
120-
var model = handlerConfig.toModel(data);
119+
log.debug('resource created successfully with: %j', data.payload);
120+
var model = handlerConfig.toModel(data.payload);
121121
res.json(model);
122122
return next();
123123
})
@@ -139,8 +139,8 @@ function updateResource(metadata, config) {
139139

140140
handlerConfig.client.update(payload, headers)
141141
.then(function(data){
142-
log.debug('resource updated successfully with: %j', data);
143-
var model = handlerConfig.toModel(data);
142+
log.debug('resource updated successfully with: %j', data.payload);
143+
var model = handlerConfig.toModel(data.payload);
144144
res.json(model);
145145
return next();
146146
})
@@ -155,9 +155,16 @@ function removeResource(metadata, config) {
155155
log.info('Request delete resource with: %j', req.params);
156156
var headers = getHeaders(req, handlerConfig.claimsConfig);
157157
handlerConfig.client.remove(req.params, headers)
158-
.then(function(){
159-
log.debug('resource removed successfully');
160-
res.sendStatus(204);
158+
.then(function(data){
159+
log.debug('resource removed successfully with: %j', data.payload);
160+
if (data.status === 204) {
161+
// no content
162+
res.sendStatus(204);
163+
} else {
164+
var model = handlerConfig.toModel(data.payload);
165+
res.status(data.status).json(model);
166+
}
167+
161168
return next();
162169
})
163170
.fail(handleErrors(config.runtimeConfig, res, next));
@@ -190,8 +197,8 @@ function resourceRelationHandler(relation, config) {
190197
var headers = getHeaders(req, claimsConfig);
191198
client.list(payload, headers)
192199
.then(function(data){
193-
log.debug('resource relation data received: %j', data);
194-
var models = data.map(toModel);
200+
log.debug('resource relation data received: %j', data.payload);
201+
var models = data.payload.map(toModel);
195202
res.json(models);
196203
return next();
197204
})
@@ -213,13 +220,15 @@ function nonStandardAction(metadata, config, action) {
213220
handlerConfig.client.call(action.verb, payload, headers)
214221
.then(function(data){
215222
log.debug('action executed successfully with: %j', data);
216-
if (!data) {
223+
if (data.status === 204) {
224+
// no content
217225
res.sendStatus(204);
218226
return next();
219227
}
220228

221-
var result = _.isArray(data) ? data.map(handlerConfig.toModel)
222-
: handlerConfig.toModel(data);
229+
var result = _.isArray(data.payload) ?
230+
data.payload.map(handlerConfig.toModel)
231+
: handlerConfig.toModel(data.payload);
223232
res.json(result);
224233
return next();
225234
})

0 commit comments

Comments
 (0)