skolplattformen-backup/libs/api-skolplattformen/lib/frejaLoginStatusChecker.ts

46 lines
1.2 KiB
TypeScript
Raw Normal View History

2022-04-01 21:38:47 +00:00
import { EventEmitter } from 'events';
import { frejaLoginStatus } from './routes';
2022-04-06 06:41:11 +00:00
import { Fetcher, FrejaLoginStatusChecker, RequestInit } from '@skolplattformen/api';
2022-04-01 21:38:47 +00:00
export class FrejaChecker extends EventEmitter implements FrejaLoginStatusChecker {
public token: string;
2022-04-06 06:41:11 +00:00
private fetcher: Fetcher
private url: string
2022-04-01 21:38:47 +00:00
private cancelled = false;
2022-04-22 12:38:13 +00:00
constructor(fetcher: Fetcher, token: string) {
2022-04-01 21:38:47 +00:00
super();
this.fetcher = fetcher
2022-04-22 12:38:13 +00:00
2022-04-01 21:38:47 +00:00
this.token = token
this.url = frejaLoginStatus;
this.check();
}
async check(): Promise<void> {
2022-04-22 12:38:13 +00:00
const response = await this.fetcher('freja-login-status', this.url);
2022-04-01 21:38:47 +00:00
const status = await response.text();
2022-04-22 12:38:13 +00:00
console.log(status)
2022-04-01 21:38:47 +00:00
this.emit(status);
if (!this.cancelled &&
status !== 'APPROVED' &&
2022-04-11 20:20:22 +00:00
status !== 'ERROR' &&
2022-04-01 21:38:47 +00:00
status !== 'CANCELLED'
){
setTimeout(() => this.check(), 1000);
}
}
async cancel(): Promise<void> {
this.cancelled = true;
}
}
export const checkStatus = (
fetch: Fetcher,
token: string,
2022-04-06 06:41:11 +00:00
session: RequestInit
2022-04-22 12:38:13 +00:00
): FrejaLoginStatusChecker => new FrejaChecker(fetch, token)
2022-04-01 21:38:47 +00:00