import Ember from 'ember'; import V2FallbackSerializer from 'travis/serializers/v2_fallback'; var Serializer = V2FallbackSerializer.extend({ isNewSerializerAPI: true, attrs: { _config: { key: 'config' }, _finishedAt: { key: 'finished_at' }, _startedAt: { key: 'started_at' }, _duration: { key: 'duration' } }, extractRelationships: function(modelClass, resourceHash) { var result; result = this._super(modelClass, resourceHash); return result; }, normalizeArrayResponse: function(store, primaryModelClass, payload, id, requestType) { var result; if (payload.commits) { payload.builds.forEach(function(build) { var commit, commit_id; commit_id = build.commit_id; if (commit = payload.commits.findBy('id', commit_id)) { build.commit = commit; return delete build.commit_id; } }); } result = this._super.apply(this, arguments); store = this.store; result.data.forEach(function(item) { var modelClass, normalized, serializer; if (item.relationships && item.relationships.commit) { serializer = store.serializerFor('commit'); modelClass = store.modelFor('commit'); normalized = serializer.normalize(modelClass, item.relationships.commit.data); return result.included.push(normalized.data); } }); return result; }, keyForV2Relationship: function(key, typeClass, method) { if (key === 'repo') { return 'repository_id'; } else if (key === 'commit') { return key; } else { return this._super.apply(this, arguments); } }, normalize: function(modelClass, resourceHash) { var data, href, id, repoId, result; result = this._super(modelClass, resourceHash); data = result.data; if (repoId = resourceHash.repository_id) { data.attributes.repositoryId = repoId; } else if (resourceHash.repository) { if (href = resourceHash.repository['@href']) { id = href.match(/\d+/)[0]; data.attributes.repositoryId = id; } } return result; } }); export default Serializer;