mirror of
https://github.com/Unleash/unleash.git
synced 2025-04-24 01:18:01 +02:00
Try to make events work properly
This commit is contained in:
parent
e8f699458f
commit
3e84274149
@ -73,6 +73,47 @@ export default class ClientFeatureToggleDeltaController extends Controller {
|
||||
});
|
||||
}
|
||||
|
||||
async getDelta(
|
||||
req: IAuthRequest,
|
||||
res: Response<RevisionDeltaEntry>,
|
||||
): Promise<void> {
|
||||
if (!this.flagResolver.isEnabled('deltaApi')) {
|
||||
throw new NotFoundError();
|
||||
}
|
||||
const query = await this.resolveQuery(req);
|
||||
const etag = req.headers['if-none-match'];
|
||||
|
||||
const currentSdkRevisionId = etag ? Number.parseInt(etag) : undefined;
|
||||
|
||||
const changedFeatures =
|
||||
await this.clientFeatureToggleService.getClientDelta(
|
||||
currentSdkRevisionId,
|
||||
query,
|
||||
);
|
||||
|
||||
if (!changedFeatures) {
|
||||
res.status(304);
|
||||
res.getHeaderNames().forEach((header) => res.removeHeader(header));
|
||||
res.end();
|
||||
return;
|
||||
}
|
||||
|
||||
if (changedFeatures.revisionId === currentSdkRevisionId) {
|
||||
res.status(304);
|
||||
res.getHeaderNames().forEach((header) => res.removeHeader(header));
|
||||
res.end();
|
||||
return;
|
||||
}
|
||||
|
||||
res.setHeader('ETag', changedFeatures.revisionId.toString());
|
||||
this.openApiService.respondWithValidation(
|
||||
200,
|
||||
res,
|
||||
clientFeaturesDeltaSchema.$id,
|
||||
changedFeatures,
|
||||
);
|
||||
}
|
||||
|
||||
private async resolveQuery(
|
||||
req: IAuthRequest,
|
||||
): Promise<IFeatureToggleQuery> {
|
||||
@ -139,45 +180,4 @@ export default class ClientFeatureToggleDeltaController extends Controller {
|
||||
|
||||
return query;
|
||||
}
|
||||
|
||||
async getDelta(
|
||||
req: IAuthRequest,
|
||||
res: Response<RevisionDeltaEntry>,
|
||||
): Promise<void> {
|
||||
if (!this.flagResolver.isEnabled('deltaApi')) {
|
||||
throw new NotFoundError();
|
||||
}
|
||||
const query = await this.resolveQuery(req);
|
||||
const etag = req.headers['if-none-match'];
|
||||
|
||||
const currentSdkRevisionId = etag ? Number.parseInt(etag) : undefined;
|
||||
|
||||
const changedFeatures =
|
||||
await this.clientFeatureToggleService.getClientDelta(
|
||||
currentSdkRevisionId,
|
||||
query,
|
||||
);
|
||||
|
||||
if (!changedFeatures) {
|
||||
res.status(304);
|
||||
res.getHeaderNames().forEach((header) => res.removeHeader(header));
|
||||
res.end();
|
||||
return;
|
||||
}
|
||||
|
||||
if (changedFeatures.revisionId === currentSdkRevisionId) {
|
||||
res.status(304);
|
||||
res.getHeaderNames().forEach((header) => res.removeHeader(header));
|
||||
res.end();
|
||||
return;
|
||||
}
|
||||
|
||||
res.setHeader('ETag', changedFeatures.revisionId.toString());
|
||||
this.openApiService.respondWithValidation(
|
||||
200,
|
||||
res,
|
||||
clientFeaturesDeltaSchema.$id,
|
||||
changedFeatures,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@ -170,11 +170,24 @@ test('should match with /api/client/delta', async () => {
|
||||
test('should get 304 if asked for latest revision', async () => {
|
||||
await setupFeatures(db, app);
|
||||
|
||||
// const waitForEvent : Promise<void> = new Promise((resolve) => {
|
||||
// app.services.configurationRevisionService.once(UPDATE_REVISION, () => {
|
||||
// resolve();
|
||||
// });
|
||||
// });
|
||||
|
||||
await app.services.configurationRevisionService.updateMaxRevisionId();
|
||||
// app.services.configurationRevisionService.emit(UPDATE_REVISION);
|
||||
|
||||
await new Promise((resolve) => setTimeout(resolve, 100));
|
||||
|
||||
// await waitForEvent;
|
||||
|
||||
const events = await db.rawDatabase('events').select('*');
|
||||
console.log(events);
|
||||
|
||||
await app.request
|
||||
.set('If-None-Match', '10')
|
||||
.set('If-None-Match', '14')
|
||||
.get('/api/client/delta')
|
||||
.expect(304);
|
||||
});
|
||||
|
Loading…
Reference in New Issue
Block a user