/** * Copyright (c) HashiCorp, Inc. * SPDX-License-Identifier: MPL-2.0 */ import { assign } from '@ember/polyfills'; import ApplicationAdapter from './application'; export default ApplicationAdapter.extend({ namespace: 'v1/sys', pathForType(type) { const path = type.replace('policy', 'policies'); return path; }, createOrUpdate(store, type, snapshot) { const serializer = store.serializerFor('policy'); const data = serializer.serialize(snapshot); const name = snapshot.attr('name'); return this.ajax(this.buildURL(type.modelName, name), 'PUT', { data }).then(() => { // doing this to make it like a Vault response - ember data doesn't like 204s if it's not a DELETE return { data: assign({}, this.serialize(snapshot), { id: name }), }; }); }, createRecord() { return this.createOrUpdate(...arguments); }, updateRecord() { return this.createOrUpdate(...arguments); }, query(store, type) { return this.ajax(this.buildURL(type.modelName), 'GET', { data: { list: true }, }); }, });