73 lines
1.9 KiB
JavaScript
73 lines
1.9 KiB
JavaScript
/**
|
|
* Copyright (c) HashiCorp, Inc.
|
|
* SPDX-License-Identifier: MPL-2.0
|
|
*/
|
|
|
|
import ApplicationSerializer from '../application';
|
|
import { formatISO } from 'date-fns';
|
|
import { formatByMonths, formatByNamespace, homogenizeClientNaming } from 'core/utils/client-count-utils';
|
|
import timestamp from 'core/utils/timestamp';
|
|
export default class ActivitySerializer extends ApplicationSerializer {
|
|
normalizeResponse(store, primaryModelClass, payload, id, requestType) {
|
|
if (payload.id === 'no-data') {
|
|
return super.normalizeResponse(store, primaryModelClass, payload, id, requestType);
|
|
}
|
|
const response_timestamp = formatISO(timestamp.now());
|
|
const transformedPayload = {
|
|
...payload,
|
|
response_timestamp,
|
|
by_namespace: formatByNamespace(payload.data.by_namespace),
|
|
by_month: formatByMonths(payload.data.months),
|
|
total: homogenizeClientNaming(payload.data.total),
|
|
};
|
|
delete payload.data.by_namespace;
|
|
delete payload.data.months;
|
|
delete payload.data.total;
|
|
return super.normalizeResponse(store, primaryModelClass, transformedPayload, id, requestType);
|
|
}
|
|
}
|
|
/*
|
|
SAMPLE PAYLOAD BEFORE/AFTER:
|
|
|
|
payload.data.by_namespace = [
|
|
{
|
|
namespace_id: '5SWT8',
|
|
namespace_path: 'namespacelonglonglong4/',
|
|
counts: {
|
|
entity_clients: 171,
|
|
non_entity_clients: 20,
|
|
clients: 191,
|
|
},
|
|
mounts: [
|
|
{
|
|
mount_path: 'auth/method/uMGBU',
|
|
"counts":{
|
|
"distinct_entities":0,
|
|
"entity_clients":0,
|
|
"non_entity_tokens":0,
|
|
"non_entity_clients":10,
|
|
"clients":10
|
|
}
|
|
},
|
|
],
|
|
},
|
|
];
|
|
|
|
transformedPayload.by_namespace = [
|
|
{
|
|
label: 'namespacelonglonglong4/',
|
|
entity_clients: 171,
|
|
non_entity_clients: 20,
|
|
clients: 191,
|
|
mounts: [
|
|
{
|
|
label: 'auth/method/uMGBU',
|
|
entity_clients: 20,
|
|
non_entity_clients: 15,
|
|
clients: 35,
|
|
},
|
|
],
|
|
},
|
|
]
|
|
*/
|