blob: cae6df62161a0e9bfa00844301d178e2f74d107a [file] [log] [blame]
'use strict'
var extend = require('extend'),
ok = require('objectkit'),
helpers = require('../helpers'),
_ = require('underscore')
_.mixin(require('underscore.string'));
function UsergridResponse(response) {
if (ok(response.body).has('entities')) {
var entities = response.body.entities
extend(response, {
metadata: extend({}, response.body),
entities: entities
})
response.first = (function() {
return entities[0] || undefined
})()
response.entity = response.first
response.last = (function() {
return entities[entities.length - 1] || entities[0] || undefined
})()
delete response.metadata.entities
entities.forEach(function(entity) {
// set uuid immutable
helpers.setImmutable(entity, 'uuid')
// set type immutable
helpers.setImmutable(entity, 'type')
// if not type user, set name immutable
if (!(_(entity.type.toLowerCase()).startsWith('user'))) {
helpers.setImmutable(entity, 'name')
}
})
// if response contains users, add UsergridUser references
if (response.first !== undefined && (_(response.first.type.toLowerCase()).startsWith('user'))) {
if (response.entities.length === 1) {
response.user = response.first
} else {
response.users = function() {
return this.entities
}
}
}
response.entities = entities
} else {
response.body.name = response.body.error
delete response.body.error
response.error = response.body
}
return response;
}
module.exports = UsergridResponse