-
-
Notifications
You must be signed in to change notification settings - Fork 13
/
Copy pathkarma-host-resolver.ts
32 lines (30 loc) · 1.1 KB
/
karma-host-resolver.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
export class KarmaHostResolver implements IKarmaHostResolver {
constructor(private http) { }
public resolveKarmaHost(ips: string[], port: number): Promise<string> {
const result = new Promise<string>(resolve => {
var foundKarma = false;
var resolvers = ips.map(ip => {
var karmaClientUrl = `http://${ip}:${port}/context.json`;
console.log('NSUTR: fetching ' + karmaClientUrl);
return this.http.getString({
url: karmaClientUrl,
method: 'GET',
timeout: 3000,
}).then(() => {
console.log('NSUTR: found karma at ' + ip);
if (!foundKarma) {
foundKarma = true;
resolve(ip);
}
}, () => undefined)
});
Promise.all(resolvers)
.then(() => {
if (!foundKarma) {
resolve(null);
}
})
});
return result;
}
}