157 lines
4.0 KiB
TypeScript
Raw Normal View History

2017-10-09 14:44:19 -07:00
import { faker } from 'ember-cli-mirage';
import { IFunctionRouteHandler, IMirageServer } from 'wherehows-web/typings/ember-cli-mirage';
import { ApiStatus } from 'wherehows-web/utils/api/shared';
import { getConfig } from "./helpers/config";
export default function(this: IMirageServer) {
2017-10-09 14:44:19 -07:00
this.passthrough();
this.get('/config', getConfig);
2017-10-09 14:44:19 -07:00
this.post('/authenticate', function({}, request: any) {
const username = JSON.parse(request.requestBody).username;
const password = JSON.parse(request.requestBody).password;
if (password === null || password === undefined) {
return 'Missing or invalid [credentials]';
} else if (password === 'invalidPassword') {
return 'Invalid Password';
}
return {
status: 'ok',
data: {username: username, uuid: faker.random.uuid()}
};
});
this.namespace = '/api/v1';
2017-10-09 14:44:19 -07:00
interface IComplianceSuggestionsObject {
complianceSuggestions: any;
}
this.get('/datasets/:id/compliance/suggestions', function(
this: IFunctionRouteHandler,
2017-10-09 15:38:21 -07:00
{ complianceSuggestions }: IComplianceSuggestionsObject
) {
return {
status: ApiStatus.OK,
autoClassification: {
urn: '',
classificationResult: JSON.stringify(this.serialize(complianceSuggestions.all())),
lastModified: new Date().getTime()
}
};
});
2017-10-09 14:44:19 -07:00
interface IFlowsObject {
flows: any;
}
this.get('/flows', function(
this: IFunctionRouteHandler,
{ flows }: IFlowsObject, request: any) {
const { page } = request.queryParams;
const flowsArr = this.serialize(flows.all());
const count = faker.random.number({ min: 20000, max: 40000 });
const itemsPerPage = 10;
return {
status: 'ok',
data: {
count: count,
flows: flowsArr,
itemsPerPage: itemsPerPage,
page: page,
totalPages: Math.round(count / itemsPerPage),
}
};
});
this.get('/list/datasets', (server: any) => {
const { datasetNodes } = server.db;
return {
status: 'ok',
nodes: datasetNodes
};
});
interface IOwnersObject {
owners: any;
}
interface IDatasetsObject {
datasets: any;
}
this.get('/datasets', function(
this: IFunctionRouteHandler,
{ datasets }: IDatasetsObject, { owners }: IOwnersObject, request: any) {
const { page } = request.queryParams;
const datasetsArr = this.serialize(datasets.all());
const ownersArr = this.serialize(owners.all());
const newDatasetsArr = datasetsArr.map(function(dataset: any) {
dataset.owners = ownersArr;
return dataset;
});
const count = faker.random.number({ min: 20000, max: 40000 });
const itemsPerPage = 10;
return {
status: 'ok',
data: {
count: count,
page: page,
itemsPerPage: itemsPerPage,
totalPages: Math.round(count / itemsPerPage),
datasets: newDatasetsArr,
}
};
});
this.get('/metrics', (server: any, request: any) => {
const { page } = request.queryParams;
const { metricMetrics } = server.db;
const count = faker.random.number({ min: 10000, max: 20000 });
const itemsPerPage = 10;
return {
status: 'ok',
data: {
count: count,
page: page,
itemsPerPage: itemsPerPage,
totalPages: Math.round(count / itemsPerPage),
metrics: metricMetrics
}
};
});
this.get('/party/entities', (server: any) => {
const { userEntities } = server.db;
return {
status: 'ok',
userEntities: userEntities
};
});
this.get('/user/me', () => {
const testUser = 'testUser';
return {
user: {
id: faker.random.number({ min: 1000, max: 5000 }),
userName: testUser,
departmentNum: 0,
email: testUser + '@linkedin.com',
name: testUser,
userSetting: {
"detailDefaultView": null,
"defaultWatch":null
}
},
status: 'ok'
};
});
}
export function testConfig(this: IMirageServer) {
this.get('/config', getConfig);
}