| 'use strict' |
| |
| var ok = require('objectkit'), |
| UsergridEntity = require('./entity.js'), |
| UsergridUser = require('./user.js'), |
| UsergridResponseError = require('./responseError.js'), |
| helpers = require('../helpers'), |
| _ = require('lodash') |
| |
| function UsergridResponse(response) { |
| if (!response) { |
| return |
| } else if (ok(response.body).has('entities')) { |
| |
| var entities = response.body.entities.map(function(en) { |
| |
| var entity = new UsergridEntity(en) |
| if (entity.isUser) { |
| entity = new UsergridUser(entity) |
| } |
| return entity |
| }) |
| _.assign(response, { |
| metadata: _.cloneDeep(response.body), |
| entities: entities |
| }) |
| delete response.metadata.entities |
| response.first = _.first(entities) || undefined |
| response.entity = response.first |
| response.last = _.last(entities) || undefined |
| if (ok(response).getIfExists('metadata.path') === '/users') { |
| response.user = response.first |
| response.users = response.entities |
| } |
| |
| Object.defineProperty(response, 'hasNextPage', { |
| get: function() { |
| return ok(response).has('metadata.cursor') |
| } |
| }) |
| |
| helpers.setReadOnly(response.metadata) |
| } else { |
| response.error = new UsergridResponseError(response.body) |
| } |
| return response; |
| } |
| |
| module.exports = UsergridResponse |